pax_global_header00006660000000000000000000000064135752373040014523gustar00rootroot0000000000000052 comment=f6dd7dfd45b0b8a455d4a6d2dc27c6b3fb49ede2 kraft-0.90/000077500000000000000000000000001357523730400125625ustar00rootroot00000000000000kraft-0.90/AUTHORS000066400000000000000000000001651357523730400136340ustar00rootroot00000000000000Klaas Freitag Thomas Richard Heike Freitag kraft-0.90/CMakeLists.txt000066400000000000000000000045031357523730400153240ustar00rootroot00000000000000project(kraft) cmake_minimum_required(VERSION 2.8.12) find_package(ECM REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) set(CMAKE_AUTOMOC TRUE) include(KDEInstallDirs) include(KDECMakeSettings) include(ECMInstallIcons) include(KDEFrameworkCompilerSettings) include(KDECMakeSettings) include(FeatureSummary) # Uncomment to enable some tweaks for AppImage build # add_definitions(-DBUILD_APPIMAGE=1) # TODO: Build without deprecated QUrl methods add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0) remove_definitions(-DQT_NO_SIGNALS_SLOTS_KEYWORDS) remove_definitions(-DQT_NO_CAST_FROM_ASCII) find_package(Qt5 CONFIG REQUIRED Core Gui Sql Widgets Xml ) # XmlGui for the ConfigSkeleton find_package(KF5 REQUIRED COMPONENTS I18n Config Contacts ) find_package(KF5Akonadi) set_package_properties(KF5Akonadi PROPERTIES DESCRIPTION "Library for general Access to Akonadi" URL "https://www.kde.org/" PURPOSE "Optionally used for addressbook integration" TYPE OPTIONAL ) find_package(KF5AkonadiContact) set_package_properties(KF5AkonadiContact PROPERTIES DESCRIPTION "Library for Accessing Contacts stored in Akonadi" URL "https://www.kde.org/" PURPOSE "Optionally used for addressbook integration" TYPE OPTIONAL ) if(KF5Akonadi_FOUND AND KF5AkonadiContact_FOUND) add_definitions(-DHAVE_AKONADI) endif() find_package(Ctemplate REQUIRED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-suggest-override") # disable the warning about null-pointer zero. FIXME. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-zero-as-null-pointer-constant") #option(QTINDICATE_DISABLE "Disable support for notifications via indicator") # disable the warning about null-pointer zero. FIXME. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-zero-as-null-pointer-constant") add_definitions(${QT_DEFINITIONS} ) include_directories(${QT_INCLUDES} src) include_directories( /usr/include/KF5/AkonadiCore ) if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") ki18n_install(po) endif() add_subdirectory(src) add_subdirectory(database) add_subdirectory(reports) add_subdirectory(views) add_subdirectory(importfilter) add_subdirectory(tools) add_subdirectory(styles) add_subdirectory(meta) add_subdirectory(tests) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) kraft-0.90/COPYING000066400000000000000000000432541357523730400136250ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. kraft-0.90/Changes.txt000066400000000000000000000347541357523730400147100ustar00rootroot00000000000000 Changes since version 0.82: ######################################### - Reworked follow up and copy document * set the correct header- and footer-texts according to the doc type * Added a checkbox if items should be copied or not - New feature: partial invoices that are substracted in the final invoice - Use an XML based migration system for document types - Added the first unit tests to Kraft - Made the document templates not containing any language specific strings any more. There is only one doc now for all languages, getting translated strings as template variables. - Removed KeepTogether flag for tables to avoid that a long list of items only starts on the next page. Might have impact on some docs. - Fixed formatting of the amount number in the XML output - More Less-KDE: Removed more mandatory dependencies on KDE. - Added 'About Kraft' information to Krafts system view. - Added document type 'Offer without price tags', which does not print price tags on the PDF (issue #58). - Internationalization: Added dutch translation => release v. 0.90 (Dec. 14, 2019) Changes since version 0.81: ######################################### - Fix send document by email - Allow emailing through xdg-email and not only through thunderbird To enable, set mailUA=xdg in the config file in the system section. - Fixed wrong usage of i18n command which caused a lot of error messages on the console. (#37) - Time calculation: Add a time unit to the form, allow to calculate times in hours, minutes and seconds (#43) - Refactored the calculation dialog, fixed using margin. (#42) - Properly ask to waste changes if user hits cancel in Calc dialog. - Fix some glitches in the setup code path, ie. db update. - Relaxed the document layout a bit by choosing a smaller font and adjusting the table column settings a bit. - More minor bug fixes and improvements => release v. 0.82 (Oct 17, 2018) Changes since version 0.80: ######################################### - Fix to build with Qt 5.11 - CMake fixes: Installation directories - Use QProcess instead of system call - Fix appstream XML data - Fix display of individual tax block on documents => release v. 0.81 (June 12, 2018) Changes since version 0.59: ######################################### - Port to Qt5/KDE Frameworks 5 - Reduction of build and runtime dependencies, especially of KDE Frameworks, replacing old KDE classes with their Qt equivalents - Dropped Webkit. Use QTextbrowser instead. Ported html generating code and CSS accordingly - Dependency on Akonadi is now optional, so builds without Akonadi are possible - Address management in Kraft was abstracted to work with or without Akonadi, other address backends could be implemented much easier now - Refresh of the GUI plus new icons, easier. - Refactored time line models completely - Show summaries for month and year items: Amount of doc types and added sums for each document type - GUI: New filter combo to limit to docs of last week or last month - Use templates for system view (contributed by Andy Wuest) - Ship an AppImage for easy testing of Kraft - Updated ReportLab based PDF generation script (erml2pdf) - countless bug fixes and improvements => release v. 0.80 (Apr 1, 2018) Changes since version 0.57: ######################################### - Fix handling of slashes in the doc id template - Fix a bug in calculation of the VAT sum - Removed kraftcat library as it was unused. Easier building now. => release v. 0.58 (Apr, 2014) Changes since version 0.56: ######################################### - No code changes. Just version bump because of a bogus tarball. => release v. 0.57 (Nov 7, 2014) Changes since version 0.55: ######################################### - Fix handling of custom greetings in combobox. - Handle document type changes correctly: Set a new ident number depending on the new document id - Fix behaviour of the greeting combobox: Do not loose custom entries any more - Add receipient email address if document is emailed - Fix document emailing for thunderbird - Fix removing of alternative- and on-demand state of items - Wording fixes - Fix Ok/Cancel for doc editor - Better error messages if template can not be read - A couple of crash fixes and memory management cleanups => release v. 0.56 (oct 30, 2014) Changes since version 0.54: ######################################### - Fix a bug with the PDF generation, regression in 0.54 - Fix compiling with latest version of ctemplate => release v. 0.55 (may 29, 2014) Changes since version 0.53: ######################################### - Use new address fetch job implementation that works independant from Nepomuk- or Baloo indexing of contacts. (KDE >= 4.12) - Support note-of-delivery documents (Lieferscheine) without prices. - Added findcontact utility - Generate a customer sorted document storage structure on disk - Improve stylesheet handling in templates, introduce CSS_IMG_PATH - Use environment variable KRAFT_HOME more consquentely - Fix tax sum calculation - Add customer address UID variable to number circle tags - Some memleak fixes - Add "followup document" to main menu - Fix installation of identity.trml - Allow the tags USERNAME, DATE and TIME in item templates. - Lots of other cleanups and fixes => release v. 0.54 (may 13, 2014) Changes since version 0.50: ######################################### - Fixes drag and drop handling in catalog window. - Fixes with units, do not confuse units any more - Utf8 fixes - other minor fixes - Releases 0.51 and 0.52 screwed. => release v. 0.53 (oct 11, 2013) Changes since version 0.50: ######################################### - Fix drag and drop in catalogues. - Implemented removal of sub chapters. - Add the content of an entire template catalog chapter to the document if the chapter item is selected. - Added a new setting "Own Identity" to allow to pick the own identity from the address books in an installed system. - Make text template loading utf8 save. - Reworked image-in-template example in invoice report template. - Fixed unit handling, no more startsWith coparison of text. => release v. 0.51 (sep 22, 2013) Changes since version 0.45: ######################################### - Handling of individual tax rates for each document item - bugfix: escape texts in reports correctly (reported by Lars Diel). - bugfix: if akonadi address was not found, display proper msg. - Proper error message if a python module is not installed but needed by the pdf generator. - added button to assign an address book entry as document receiver for existing documents (Bug #3477467) - bugfix: Display of number of processed sql commands in setup assistant (Bug #3560611) - started to optimize database save of documents for more performant saves. - bugfix: Fixed import of document items from csv lists. - added page number on default document from page two to end. - bugfix: Fixed mysql database setup. - Rearragned doc type setup dialog to better display path names of template file and watermark file. - bugfix: If a manual entered template has checkbox "store in template catalog, the template is immediately written to and catalog is reloaded. - bugfix: Focus on the last added item on document edit. => release v. 0.50 (dec 17, 2012) Changes since version 0.44: ######################################### - bugfix release: Fixed the display of decimal places in the PDF document which caused broken documents. => release v. 0.45 (nov 08,2011) Changes since version 0.43: ######################################### - Completely reworked the addressbook widget in Kraft, used in new doc assistant and in the "who am i" dialog: Fully Akonadi-based, works with various addressbooks and loads addresses way more fast. - Completely reworked text template widget used in the document editor: Less bugs, more obvious gui, help texts where needed - Fixed bug that crashed Kraft when clicking on empty catalog chapters. - Add ability to add localized report template files, added german localization - Fixed bug that numbers in the doc are not localized correctly - Fixed bug that the doc type is not taken correctly from the new doc wizard - No need any more to checkbox single item templates to move them into the document. Selecting is sufficient. - Added a search line in the "who am i"-dialog => release v. 0.44 (nov 03,2011) Changes since version 0.41: ######################################### - Added search box in digest lists again, for that enhanced the search field class. - cleaned up the digest models - optimized the digest model - changed from treeview to tableview for latest- and all view => release v. 0.43 (may 25, 2011) Changes since version 0.40: ######################################### - More changes to the Akonadi based addressbook integration - switched to a python only version of trml2pdf called erml2pdf, makes porting to other platforms easier plus dropped dependency on java with pdftk - used Qt Model/View for the document lists. Way faster startup. - New document digest view - Catalogs: Implemented nested catalog structure - Catalogs: Moving templates around per d&d - Catalogs: user defined sorting in catalogs - Catalogs: dropping of templates => released v. 0.41 (april 18th, 2011) Changes since version 0.32: ######################################### - Ported to the KDE 4 Platform. In particular, to KDE 4.4 - Use Akonadi based addressbook - Edit dialog for Wages and Units - SQLite-Support - Setup Assistant for SQLite and MySQL Databases => released v. 0.40 Changes since version 0.31: ######################################### - Tax: Added more flexible tax calculation. Kraft now has the tax in a table for easy changing, supports no, reduced and full tax on document level for this release, on item level later. - Numbercycles: All Kraft documents need an unique document number. These are taken from numbercycles now which can be edited and shared between document types. - Watermark: Kraft documents can now be merged with an existing pdf file with the company logo. Configuration through the Kraft settings on a per document type basis - Templates: Kraft now supports different templates for each document type. Templates can be configured through the Kraft settings. - Project-String: There is a project label at the document. It is exported to the document template. - System-Tab: Display of some interesting setup information - Templates for PDF and HTML output are reloaded if modified => released v. 0.32 Changes since version 0.30: ######################################### - added a read only view on documents, customizable with ctemplate as html page - added importing items from text files with configurable import filters, to enable usage of special software which is able to export text files - added document number cycles: The unique id of a document depends on a unique number. Now there can be multiple number cycles which can be used by document types. Multiple doc types can use the same number cycle, that means that for example all types of invoices count the same number cycle while offers are in another. => released v. 0.31 Changes since version 0.25: ######################################### - introduced the extended combo box with explanation line for units. - added document item tagging - added discount item system, based on tagging - tag templates with tag template edit dialog - fixed a bunch of bugs with text templates (header- and footer text) - tag selection in ordinary add-item-to-document dialog => released v. 0.30 Changes since version 0.24: ######################################### - Added a Wizard for document creation - Improved the document overview widget for more intuitive use. - Copying of complete documents added. - Followup documents (eg. Invoice follows Offer) added - Litte marker for new documents added to doc overview list. - Help text added to positions canvas - Client address bits added to the available template variables Changes since version 0.23: ######################################### - internationalisation: Ability to do documents in a different location than the desktop is running under. => released BETA v. 0.24 Changes since version 0.22: ######################################### - fixed: database migration 5: added IF EXISTS - fixed: encoding in the report file - improved: The document digest overview is not longer always redrawed and looses its selected item. => released v. 0.23 Changes since version 0.20: ######################################### - fixed: select from catalogs with doubleclick - fixed: allow prices for positions larger than 10k - fixed: openArchivedDocument printed again instead of opening archived doc from the archive path - fixed: template texts in the catalog view where not shown if they were exactly 60 chars long. - feature: Alternative positions - feature: Demand positions - feature: Switched to google template system, see http://code.google.com/p/google-ctemplate/ - bugfix: Catalog changes show up directly in opened catalogs, also if open as a template catalog in the doc window. => released v. 0.22 Changes since version 0.14: ######################################### - fixed bug with manual price field that needs to be left by TAB to get a change recognised. - increased precision to 2 digits for position amounts - allow euro-sign in texts and in the whiteboard. Due to a lack in the qt3 mysql driver the char needs to be en- and decoded. - reduced the amount of toolbar buttons to only show the important ones. - more beautifull and working navigation block in the document dialog - mailing documents added - Completely changed header- and footer text template system: * now there is more than one text available per text- and doc type * direct adding, editing and removing of texts from the dialog * selecting template texts in the same way as selecting position templates, more intuitive GUI - Addresses also selectable from an address catalog - persist the selection of the greeting and salut text - Document ID now configurable in the settings file, key DocIdent: [document] DocIdent=T-%y%w%i - database upgrade code more robust - now additionally save archived xml documents Bugs fixed: - fixed time lined doc overview, now displaying all documents of all months of a year. - fixed modification indication: Now also adding a position counts as modification - encoding bugs fixed - allow to leave text edit fields using the tab key - deletion of positions: Fixed an iteration over the list issue - smarter template-to-doc-position dialog - others kraft-0.90/INSTALL000066400000000000000000000103561357523730400136200ustar00rootroot00000000000000 Generic compile and installation instructions in the beginning of this file. => Find Kraft specific instructions below. Make sure to read them! +------------------------------------------------------------------+ | Please use binary Packages from the openSUSE Buildservice | | or the binary package repository of your joice. | | Go to http://software.opensuse.org/search | | and search for Kraft. Use the openSUSE 1-Click-Install | +------------------------------------------------------------------+ The following section briefly describes how to build Kraft with cmake. ----------------------------------------------------- Precondition ----------------------------------------------------- Check that cmake is installed on your machine and is in your PATH. To do so, just type $ cmake --version on your command line. Version 2.4 is required, the most recent stable version of cmake is preferred. To build Kraft, the following libs and software versions have to be provided: - cmake and the cmake extra modules - Qt libs incl. devel packages version 5.5.0 or later - kcontacts for using the KDE contact classes - A few other KDE classes (kxmlgui, ki18n) - google ctemplate, A simple but powerful template language for C++, packages from the openSUSE Buildservice or from the website https://github.com/OlafvdSpek/ctemplate - optional: akonadi contact for Akonadi based addressbook access Required packages for building with openSUSE Leap 42.3: - cmake - extra-cmake-modules - gcc-c++ - kcontacts-devel - akonadi-contact-devel - gettext - libctemplate-devel - ki18n-devel - kxmlgui-devel - libQt5Core-devel - libQt5Gui-devel - libQt5Sql-devel - libQt5Widgets-devel Required packages for building with Kubuntu 18.04 - cmake - extra-cmake-modules - qt5-default - gettext - libkf5xmlgui-dev - libkf5contacts-dev - libkf5akonadi-dev - libkf5akonadicontact-dev - libctemplate-dev ----------------------------------------------------- Build Kraft ----------------------------------------------------- cmake is designed so that the build process can be done in a separate directory. This is highly recommended for users and required for packagers. Go to the top level of the source directory. To build Kraft in the subdirectory ./build/ type $ mkdir build $ cd build $ cmake .. to generate the Makefiles. $ ccmake . to change the configuration of the build process. (optional) Check out for errors during the cmake run. Fix them, usually you need more devel packages installed. Ready? Congratulations, your Makefiles were generated! Now you could just type $ make to build the project in the build/ directory. Note that 'make' automatically checks whether any CMakeLists.txt file has changed and reruns cmake if necessary. To start Kraft from the build directory, set the environment variable KRAFT_HOME to the root of the _source_ directory to let Kraft find its resource files: $ KRAFT_HOME=/home/me/kraft build/src/kraft Kraft Installation ================== Type $ make install To change the target root directory to where it is installed, call cmake with the parameter -DCMAKE_INSTALL_PREFIX=/my_dir Database ======== Since version 0.40 Kraft either can use a SQLite file based database or a MySQL server based database. The SQLite database is created automatically on the fly on first start. Its use is recommended for all users who want to evaluate Kraft. To run Kraft with MySQL, create or pick a user on the MySQL server with appropiate permissions to write to a specific database and create tables on it. Create an empty database to use with Kraft. Remember both the database name and the credentials. On Krafts first start, enter these data in the setup assistant. Kraft will create the database tables and fill it automatically. Document Generation =================== Kraft generates PDF documents. For that it uses a python tool named erml2pdf. The tool can be found in Kraft's tools directory in this source package. erml2pdf uses a python lib called the ReportLab Toolkit: a mature, Open Source PDF library which can be found at http://www.reportlab.org/rl_toolkit.html Furthermore it uses python-pypdf for pdf processing. Both python modules are not part of Kraft and should be installed separately on the system. kraft-0.90/README.md000066400000000000000000000030271357523730400140430ustar00rootroot00000000000000 # The Kraft Project **Kraft is free software to help to handle documents like quotes and invoices in your small business.** It is a Qt/KF5 based desktop software with a strong focus on ease of use and the just enough feature set for the use case. With Kraft, creating documents will run smooth and free time for more enjoyable things than office work. Check out the website http://volle-kraft-voraus.de for more information. Kraft runs on your Linux desktop. No cloud involved, your data stays with you! With Kraft, writing documents like quotes and invoices is very easy and fast. Repeating tasks are supported, documents can be generated semi automatically, ie. invoices from offers sent out before. For efficient work, Kraft supports catalogs to organize materials and template texts. It focuses on high quality printouts because paper is still the main communication media in the small business world. However, it also sends documents via email. Kraft utilizes a bunch of very useful tools of the free softare world: - KDE addressbook for customer management - MySQL or alternatively SQLite for database support - [ReportLab](http://www.reportlab.com/opensource/) for PDF generation: - [ctemplate](https://github.com/OlafvdSpek/ctemplate) templating library. ## Interested? [Install Kraft](http://volle-kraft-voraus.de/Main/Download) on your Linux desktop. For questions and comments, please speak up. Check the [web site](http://volle-kraft-voraus.de/Main/Contribution) for contact details. Jun 2005-2019, Klaas Freitag kraft-0.90/Releasenotes.txt000066400000000000000000000057401357523730400157620ustar00rootroot00000000000000 ==================================================================== Please refer to the Kraft Project website http://volle-kraft-voraus.de/Main/Releases ==================================================================== older entries: Das Kraft Release 0.22 verwendet ein neues Text-Template System, das für die benutzerkonfigurierbare PDF-Ausgabe der Dokumente verwendet wird. Es wird das google ctemplate-System verwendet, Details dazu unter http://code.google.com/p/google-ctemplate/ Das neue System ist sehr flexibel und stabil und daher zukunftssicher und löst das selbstgeschriebene alte System ab. Leider hat sich die Syntax geändert, weshalb eigene Templates angepasst werden müssen. Weiterhin enthält Kraft 0.22 zwei neue Arten von Dokument Posten. Es gibt Alternativpositionen, die eine Alternative zu einer vorhergegangenen Position beschreiben. Bedarfspositionen beschreiben Aufwände, die nur bei Bedarf anfallen. Beide Arten addieren ihre Kosten nicht zur Gesamtsumme und sind durch Kursivschrift im Dokument hervorgehoben. Weiterhin wurden viele Fehler behoben und generelle Code Verbesserungen vorgenommen. Das Datenbankschema wurde geändert, das Update geschieht automatisch durch Kraft. ---------------------------------------------------------------------- The Kraft release 0.22 changes the text template system that is used by Kraft to support user configureable pdf output. It was changed from a very basic homegrown system to the google ctemplate system, details under http://code.google.com/p/google-ctemplate/ It is very flexible and mature and thus future proof which was reason enough to switch to it at this early project state. The template format is slightly different to the former format, so editing of own templates is required. Additionally two new kinds of document positions were added: Alternative and demand positions. The alternative positions describe an alternative to another position. The demand position describes a position where it is not yet clear if and how much of it is needed. Both position kinds do not add to overall sum and are marked through italic characters in the printout by default. Furthermore a lot of bugfixes and genral code improvements where committed. The database scheme was extended, update is automatically performed. ==================================================================== This release 0.20 of Kraft brings a big step ahead in the way text templates for the header and footer texts for the different doc types are managed. Kraft now supports to have several templates per type (ie. for the header of invoices) and all of them are offered very handy right to select from a catalog kind in a context aware manner. Kraft takes another important step towards a really well integrated KDE addressbook. All customer addresses are managed in the KDE addressbook but there is a customer catalog now integrated. This release contains a lot of important bug fixes and small additions to functionality, update is really recommended. kraft-0.90/TODO000066400000000000000000000002321357523730400132470ustar00rootroot00000000000000Todo list for Kraft =================== Please use the github issue tracker for enhancements and bug reports: https://github.com/dragotin/kraft/issues kraft-0.90/cmake/000077500000000000000000000000001357523730400136425ustar00rootroot00000000000000kraft-0.90/cmake/modules/000077500000000000000000000000001357523730400153125ustar00rootroot00000000000000kraft-0.90/cmake/modules/COPYING-CMAKE-SCRIPTS000066400000000000000000000024571357523730400203200ustar00rootroot00000000000000Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. kraft-0.90/cmake/modules/FindCtemplate.cmake000066400000000000000000000015671357523730400210440ustar00rootroot00000000000000# - Try to find the ctemplate # Once done this will define # # CTEMPLATE_FOUND - system has ctemplate # CTEMPLATE_INCLUDE_DIR - the ctemplate include directory # CTEMPLATE_LIBRARIES - Link this to use ctemplate # # Copyright (c) 2009, Thomas Richard, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. if (CTEMPLATE_INCLUDE_DIR AND CTEMPLATE_LIBRARIES) # in cache already SET(CTEMPLATE_FOUND TRUE) else (CTEMPLATE_INCLUDE_DIR AND CTEMPLATE_LIBRARIES) FIND_PATH(CTEMPLATE_INCLUDE_DIR ctemplate/template.h) FIND_LIBRARY(CTEMPLATE_LIBRARIES NAMES ctemplate) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ctemplate DEFAULT_MSG CTEMPLATE_INCLUDE_DIR CTEMPLATE_LIBRARIES ) endif (CTEMPLATE_INCLUDE_DIR AND CTEMPLATE_LIBRARIES) kraft-0.90/database/000077500000000000000000000000001357523730400143265ustar00rootroot00000000000000kraft-0.90/database/CMakeLists.txt000066400000000000000000000001111357523730400170570ustar00rootroot00000000000000add_subdirectory(mysql) add_subdirectory(sqlite3) add_subdirectory(meta) kraft-0.90/database/README000066400000000000000000000024531357523730400152120ustar00rootroot00000000000000Kraft - solution for open craft =============================== Kraft is a program that supports craftsmen in their daily jobs: making offers, invoices and confirmations. Kraft needs a mysql database running. But setup is easy, please try it. How to setup the database? ========================== First, install the mysql packages of your distribution. Create a database user and select a suitable password. Please replace the word 'user' in the following code examples with the user name you created. The database can be set up using the creation scripts in Krafts database directory. The scripts do create the database completely new, even if they exists. The standard way however to let Kraft create and maintain the database schema for you. All that needs to be done is to - start MySQL on the system - have a user and password combination that has acces to the database - create an empty database with a suitable name like for example "kraft". - enter the credentials and the database name in Kraft's config dialog. Schema creation and maintenance is done by Kraft automatically. To create the database, perform the following steps: The database credentials must be entered into the settings dialog in kraft after the first start. Please restart after you have entered the data. That's it. kraft-0.90/database/errorcodes.txt000066400000000000000000000004461357523730400172420ustar00rootroot00000000000000type problem + native db error 1 mysql not started on the system: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) QMYSQL3: Unable to connect' 1 mysql running, but no db kraft there 'Unknown database 'kraft' QMYSQL3: Unable to connect' kraft-0.90/database/meta/000077500000000000000000000000001357523730400152545ustar00rootroot00000000000000kraft-0.90/database/meta/21_meta.xml000066400000000000000000000115161357523730400172320ustar00rootroot00000000000000 Progress Payment Invoice default en PartialInvoice true Final Invoice Invoice Partial Invoice default en PartialInvoice true Final Invoice Invoice Final Invoice default en SubstractPartialInvoice true Teilrechnung default de PartialInvoice true Schlussrechnung Rechnung Abschlagsrechnung default de PartialInvoice true Schlussrechnung Rechnung Schlussrechnung default de SubstractPartialInvoice true Angebot de Abschlagsrechnung Teilrechnung Schlussrechnung Rechnung Auftragsbestätigung de Abschlagsrechnung Teilrechnung Schlussrechnung Rechnung Lieferschein de docTemplateFile delivery_receipt.trml HidePrices 1 Abschlagsrechnung Teilrechnung Schlussrechnung Rechnung Angebot (keine Preise) de docTemplateFile offer_no_prices.trml HidePrices 1 Delivery Receipt en docTemplateFile delivery_receipt.trml HidePrices 1 Final Invoice Partial Invoice Progress Payment Invoice Invoice Acceptance of Order en Final Invoice Partial Invoice Progress Payment Invoice Invoice Offer en Final Invoice Partial Invoice Progress Payment Invoice Invoice Offer (No Pricetags) en docTemplateFile offer_no_prices.trml HidePrices 1 Offerte nl Rekening Pakbon Pakbon nl docTemplateFile delivery_receipt.trml Rekening Rekening nl kraft-0.90/database/meta/CMakeLists.txt000066400000000000000000000002431357523730400200130ustar00rootroot00000000000000########### install files ############### file(GLOB meta_scripts *_meta.xml) install(FILES ${meta_scripts} DESTINATION ${DATA_INSTALL_DIR}/kraft/meta) kraft-0.90/database/mysql/000077500000000000000000000000001357523730400154735ustar00rootroot00000000000000kraft-0.90/database/mysql/CMakeLists.txt000066400000000000000000000003031357523730400202270ustar00rootroot00000000000000add_subdirectory(migration) ########### install files ############### install(FILES create_schema.sql fill_schema_de.sql fill_schema_en.sql DESTINATION ${DATA_INSTALL_DIR}/kraft/dbinit/mysql) kraft-0.90/database/mysql/create_schema.sql000066400000000000000000000117701357523730400210050ustar00rootroot00000000000000# DROP DATABASE IF EXISTS kraft; # CREATE DATABASE kraft DEFAULT CHARACTER SET "utf8"; # use kraft; CREATE TABLE preisArten ( preisArtID INT NOT NULL, preisArt VARCHAR(64) NOT NULL, PRIMARY KEY( preisArtID ) ); CREATE TABLE wordLists( category VARCHAR(64), word VARCHAR(255), PRIMARY KEY( category, word ) ); CREATE TABLE CatalogSet( catalogSetID INT NOT NULL AUTO_INCREMENT, name VARCHAR(255), description VARCHAR(255), catalogType VARCHAR(64), sortKey INT NOT NULL, PRIMARY KEY(catalogSetID) ); CREATE TABLE CatalogChapters( chapterID INT NOT NULL AUTO_INCREMENT, catalogSetID INT NOT NULL, chapter VARCHAR(255), sortKey INT NOT NULL, PRIMARY KEY(chapterID), INDEX(chapter) ); CREATE TABLE Catalog ( TemplID INT NOT NULL AUTO_INCREMENT, chapterID INT NOT NULL default 1, unitID INT NOT NULL, Floskel TEXT, Gewinn DECIMAL(6,2) default 0, zeitbeitrag TINYINT default 1, enterDatum DATETIME, modifyDatum TIMESTAMP, Preisart INT NOT NULL default 1, EPreis DECIMAL(10,2) default 0, PRIMARY KEY( TemplID ), INDEX ( chapterID ) ); UPDATE Catalog SET modifyDatum=enterDatum; CREATE TABLE CalcTime ( TCalcID INT NOT NULL AUTO_INCREMENT, TemplID INT NOT NULL, name VARCHAR(255), minutes INT default 0, percent INT default 0, stdHourSet INT default 0, allowGlobal INT default 1, modDate TIMESTAMP, PRIMARY KEY( TCalcID), INDEX( TemplID ) ); CREATE TABLE CalcFixed( FCalcID INT NOT NULL AUTO_INCREMENT, TemplID INT NOT NULL, name VARCHAR(255), amount DECIMAL(10,2) default 1.0, price DECIMAL(10,2), percent INT default 0, modDate TIMESTAMP, PRIMARY KEY(FCalcID), INDEX(TemplID) ); CREATE TABLE CalcMaterials( MCalcID INT NOT NULL AUTO_INCREMENT, TemplID INT NOT NULL, name VARCHAR(255), percent INT default 0, modDate TIMESTAMP, PRIMARY KEY(MCalcID), INDEX(TemplID) ); CREATE TABLE CalcMaterialDetails( MCalcDetailID INT NOT NULL AUTO_INCREMENT, CalcID INT NOT NULL, materialID INT NOT NULL, amount DECIMAL(10,2), PRIMARY KEY(MCalcDetailID), INDEX(CalcID) ); CREATE TABLE units( unitID INT NOT NULL, unitShort VARCHAR(255), unitLong VARCHAR(255), unitPluShort VARCHAR(255), unitPluLong VARCHAR(255), PRIMARY KEY(unitID), INDEX(unitShort) ); CREATE TABLE stockMaterial ( matID INT NOT NULL AUTO_INCREMENT, chapterID INT NOT NULL default 1, material mediumtext, unitID INT NOT NULL, perPack DECIMAL(10,2), priceIn DECIMAL(10,2), priceOut DECIMAL(10,2), enterDate DATETIME, modifyDate TIMESTAMP, PRIMARY KEY(matID), INDEX(chapterID) ); CREATE TABLE stdSaetze( stdSaetzeID INT NOT NULL AUTO_INCREMENT, name VARCHAR(255), price DECIMAL(10,2), sortKey int, PRIMARY KEY(stdSaetzeID) ); CREATE TABLE document( docID INT NOT NULL AUTO_INCREMENT, ident VARCHAR(32), docType VARCHAR(255), clientID VARCHAR(32), clientAddress TEXT, salut VARCHAR(255), goodbye VARCHAR(128), lastModified TIMESTAMP, date DATE, pretext TEXT, posttext TEXT, PRIMARY KEY( docID ), INDEX(ident), INDEX(clientID) ); CREATE TABLE docposition( positionID INT NOT NULL AUTO_INCREMENT, docID INT NOT NULL, ordNumber INT NOT NULL, text TEXT, amount DECIMAL(10,2), unit INT, price DECIMAL(10,2), PRIMARY KEY( positionID ), INDEX(docID), UNIQUE( docID, ordNumber) ); CREATE TABLE archdocStates( stateID INT NOT NULL AUTO_INCREMENT, state VARCHAR(32), PRIMARY KEY( stateID ) ); CREATE TABLE archdoc( archDocID INT NOT NULL AUTO_INCREMENT, ident VARCHAR(32), docType VARCHAR(255), docDescription TEXT, clientAddress TEXT, salut VARCHAR(255), goodbye VARCHAR(128), printDate TIMESTAMP, date DATE, pretext TEXT, posttext TEXT, state int, PRIMARY KEY( archDocID ), INDEX(ident) ); CREATE TABLE archdocpos( archPosID INT NOT NULL AUTO_INCREMENT, archDocID INT NOT NULL, ordNumber INT NOT NULL, text TEXT, amount DECIMAL(10,2), unit VARCHAR(64), price DECIMAL(10,2), vat DECIMAL(4,1), PRIMARY KEY( archPosID ), INDEX(archDocID), UNIQUE( archDocID, ordNumber) ); CREATE TABLE kraftsystem( dbschemaversion INT NOT NULL, updateUser VARCHAR(256) ); INSERT INTO kraftsystem ( dbschemaversion ) VALUES ( 1 ); # message Database created. kraft-0.90/database/mysql/fill_schema_de.sql000066400000000000000000000064341357523730400211410ustar00rootroot00000000000000DELETE FROM preisArten; INSERT INTO preisArten VALUES (0, 'offen'); INSERT INTO preisArten VALUES (1, 'selbsterstellt'); INSERT INTO preisArten VALUES (2, 'kalkuliert'); DELETE FROM CatalogSet; INSERT INTO CatalogSet (name, description, catalogType, sortKey) VALUES ( "Standard Mustertexte", "Kalkulierte Musterposten", "TemplCatalog", 1 ); SET @newCat := LAST_INSERT_ID(); DELETE FROM CatalogChapters; INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Arbeit', 1, @newCat ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Maschine', 2, @newCat ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Materialeinsatz', 3, @newCat ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Service', 4, @newCat ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Sonstige', 5, @newCat ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Transport', 6, @newCat ); UPDATE CatalogChapters SET catalogSetID=@newCat; INSERT INTO CatalogSet( name, description, catalogType, sortKey) VALUES ("Material", "Materialkatalog", "MaterialCatalog", 2 ); SET @newCat := LAST_INSERT_ID(); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Schüttgüter', 3, @newCat); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Naturstein', 2, @newCat); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Beton', 1, @newCat); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Rohre', 4, @newCat); DELETE FROM units; INSERT INTO units VALUES (0, 'm', 'Meter', 'm', 'Meter' ); INSERT INTO units VALUES (1, 'qm', 'Quadratmeter', 'qm', 'Quadratmeter' ); INSERT INTO units VALUES (2, 'cbm', 'Kubikmeter', 'cbm', 'Kubikmeter' ); INSERT INTO units VALUES (3, 'Sck.', 'Sack', 'Sck.', 'Saecke' ); INSERT INTO units VALUES (4, 'l', 'Liter', 'l', 'Liter' ); INSERT INTO units VALUES (5, 'kg', 'Kilogramm', 'kg', 'Kilogramm' ); INSERT INTO units VALUES (6, 'Stck.', 'Stueck', 'Stck.', 'Stueck' ); INSERT INTO units VALUES (7, 't', 'Tonne', 't', 'Tonnen' ); INSERT INTO units VALUES (8, 'pausch.', 'pauschal', 'pausch.', 'pauschal' ); INSERT INTO units VALUES (9, 'Std.', 'Stunde', 'Std.', 'Stunden' ); DELETE FROM stdSaetze; INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Geselle', 34.00, 1 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Meister', 39.00, 2 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Helfer', 30.00, 4 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Auszubildender', 21.00, 3 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Maschinenfuehrer', 33.00, 5 ); DELETE FROM wordLists; INSERT INTO wordLists VALUES ('greeting', 'mit den besten Grüssen,' ); INSERT INTO wordLists VALUES ('greeting', 'liebe Grüsse,' ); INSERT INTO wordLists VALUES ('greeting', 'Hochachtungsvoll,' ); INSERT INTO wordLists VALUES ('greeting', 'mit freundlichem Gruß,' ); INSERT INTO wordLists VALUES ('salut', 'Sehr geehrter Herr %NAME,' ); INSERT INTO wordLists VALUES ('salut', 'Sehr geehrte Frau %NAME,' ); INSERT INTO wordLists VALUES ('salut', 'Sehr geehrte Frau %NAME, sehr geehrter Herr %NAME,' ); INSERT INTO wordLists VALUES ('salut', 'Lieber %GIVEN_NAME,' ); INSERT INTO wordLists VALUES ('salut', 'Liebe %GIVEN_NAME,' ); kraft-0.90/database/mysql/fill_schema_en.sql000066400000000000000000000067301357523730400211520ustar00rootroot00000000000000DELETE FROM preisArten; INSERT INTO preisArten VALUES (0, 'open'); INSERT INTO preisArten VALUES (1, 'manual'); INSERT INTO preisArten VALUES (2, 'calculated'); DELETE FROM CatalogSet; INSERT INTO CatalogSet (name, description, catalogType, sortKey) VALUES ( "Standard Templates", "A set of templates suitable for business", "TemplCatalog", 1 ); SET @newCat := LAST_INSERT_ID(); DELETE FROM CatalogChapters; INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Work', 1, @newCat ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Machine', 2, @newCat ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Concrete', 3, @newCat ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Stones', 4, @newCat ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Misc', 5, @newCat ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Transportation', 6, @newCat ); INSERT INTO CatalogSet( name, description, catalogType, sortKey) VALUES ("Material", "Material Catalog to Use in Calculations in Templates", "MaterialCatalog", 2 ); SET @newCat := LAST_INSERT_ID(); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Sand etc.', 3, @newCat ); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Stones', 2, @newCat ); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Concreate', 1, @newCat ); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Pipes', 4, @newCat ); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Wood', 5, @newCat ); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Art and Furnitures', 6, @newCat ); DELETE FROM units; INSERT INTO units VALUES (0, 'm', 'Meter', 'm', 'Meter' ); INSERT INTO units VALUES (1, 'sm', 'Squaremeter', 'qm', 'Squaremeter' ); INSERT INTO units VALUES (2, 'cbm', 'Cubikmeter', 'cbm', 'Cubikmeter' ); INSERT INTO units VALUES (3, 'Bag.', 'Bag', 'Bag', 'Bags' ); INSERT INTO units VALUES (4, 'l', 'Liter', 'l', 'Liter' ); INSERT INTO units VALUES (5, 'kg', 'Kilogramm', 'kg', 'Kilogramm' ); INSERT INTO units VALUES (6, 'Pcs.', 'Piece', 'Pcs.', 'Pieces' ); INSERT INTO units VALUES (7, 't', 'Ton', 't', 'Tons' ); INSERT INTO units VALUES (8, 'pausch.', 'pauschal', 'pausch.', 'pauschal' ); INSERT INTO units VALUES (9, 'Hour', 'Hour', 'Hours', 'Hours' ); DELETE FROM stdSaetze; INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Worker', 34.00, 1 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Master', 39.00, 2 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Helper', 30.00, 4 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Trainee', 21.00, 3 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Machine Driver', 33.00, 5 ); DELETE FROM wordLists; INSERT INTO wordLists VALUES ('greeting', 'with kind regards,' ); INSERT INTO wordLists VALUES ('greeting', 'with best regards,' ); INSERT INTO wordLists VALUES ('greeting', 'yours faithfully,' ); INSERT INTO wordLists VALUES ('greeting', 'goodbye and thanks for the fish,' ); INSERT INTO wordLists VALUES ('greeting', 'goodbye' ); INSERT INTO wordLists VALUES ('greeting', 'forever yours,' ); INSERT INTO wordLists VALUES ('salut', 'Dear Mr. %NAME' ); INSERT INTO wordLists VALUES ('salut', 'Dear Mrs. %NAME' ); INSERT INTO wordLists VALUES ('salut', 'Dear Mrs. %NAME, dear Mr. %NAME' ); INSERT INTO wordLists VALUES ('salut', 'Dear %GIVEN_NAME' ); kraft-0.90/database/mysql/migration/000077500000000000000000000000001357523730400174645ustar00rootroot00000000000000kraft-0.90/database/mysql/migration/10_dbmigrate.sql000066400000000000000000000051221357523730400224430ustar00rootroot00000000000000# message allow laternatives and demand positions for offers SELECT @item := docTypeID FROM DocTypes WHERE name="Offer"; INSERT IGNORE INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', @item, 'AllowAlternative', '1'); INSERT IGNORE INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', @item, 'AllowDemand', '1'); SELECT @item := docTypeID FROM DocTypes WHERE name="Angebot"; INSERT IGNORE INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', @item, 'AllowAlternative', '1'); INSERT IGNORE INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', @item, 'AllowDemand', '1'); # message Add a list value identification column to the attribute table ALTER TABLE attributes ADD COLUMN valueIsList tinyint default 0 after value; DROP TABLE IF EXISTS tmp_attrib; CREATE TABLE tmp_attrib ( id INT NOT NULL AUTO_INCREMENT, hostObject VARCHAR(64), hostId INT, name VARCHAR(64), value MEDIUMTEXT, valueIsList TINYINT, PRIMARY KEY(id), UNIQUE INDEX( hostObject, hostId, name ) ); INSERT INTO tmp_attrib (hostObject, hostId, name, value, valueIsList) SELECT hostObject, hostId, name, value, 0 FROM attributes; # message Create an attribute value table CREATE TABLE IF NOT EXISTS attributeValues ( id INT NOT NULL AUTO_INCREMENT, attributeId INT NOT NULL, value VARCHAR(255), PRIMARY KEY( id ), INDEX( attributeId ) ); # message copy the attribute values over to the new attribute value table INSERT INTO attributeValues (attributeId, value) SELECT id, value FROM tmp_attrib WHERE value is not null; # message drop the attrib column ALTER TABLE tmp_attrib DROP COLUMN value; DROP TABLE IF EXISTS attribute_old; RENAME TABLE attributes TO attribute_old, tmp_attrib TO attributes; # message create a table to keep tag templates CREATE TABLE IF NOT EXISTS `tagTemplates` ( `tagTmplID` int(11) NOT NULL auto_increment, `sortkey` int(11) NOT NULL, `name` varchar(255) default NULL, `description` varchar(255) default NULL, `color` char(7) default NULL, PRIMARY KEY (`tagTmplID`), KEY `sortkey` (`sortkey`) ); INSERT IGNORE INTO tagTemplates (sortkey, name, description, color) VALUES (3, 'Discount', 'Marks items to give discount on', '#ff1c1c' ); INSERT IGNORE INTO tagTemplates (sortkey, name, description, color) VALUES (1, 'Material', 'Marks material', '#4e4e4e' ); INSERT IGNORE INTO tagTemplates (sortkey, name, description, color) VALUES (2, 'Work', 'Marks working hour items', '#ffbb39' ); INSERT IGNORE INTO tagTemplates (sortkey, name, description, color) VALUES (4, 'Plants', 'Marks plant items', '#26b913' ); kraft-0.90/database/mysql/migration/11_dbmigrate.sql000066400000000000000000000005461357523730400224510ustar00rootroot00000000000000# message Adding relation table information to attribute table ALTER TABLE attributes ADD COLUMN relationTable varchar(64) default NULL AFTER valueIsList; ALTER TABLE attributes ADD COLUMN relationIDColumn varchar(64) default NULL AFTER relationTable; ALTER TABLE attributes ADD COLUMN relationStringColumn varchar(64) default NULL AFTER relationIDColumn; kraft-0.90/database/mysql/migration/12_dbmigrate.sql000066400000000000000000000006641357523730400224530ustar00rootroot00000000000000CREATE TABLE numberCycles ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(64) NOT NULL, lastIdentNumber INT NOT NULL DEFAULT 0, identTemplate VARCHAR(64) NOT NULL DEFAULT "%i-%yyyy", PRIMARY KEY( id ), UNIQUE(name) ); SELECT @id := IF( ISNULL(MAX( docID)), 1, MAX(docID) ) FROM document; INSERT INTO numberCycles (name, lastIdentNumber) VALUES ("default", @id); kraft-0.90/database/mysql/migration/13_dbmigrate.sql000066400000000000000000000001501357523730400224420ustar00rootroot00000000000000# message Adding a taxType column ALTER TABLE docposition ADD COLUMN taxType int default 3 AFTER price; kraft-0.90/database/mysql/migration/14_dbmigrate.sql000066400000000000000000000005671357523730400224570ustar00rootroot00000000000000# message Add tax table CREATE TABLE taxes ( id INT NOT NULL AUTO_INCREMENT, fullTax DECIMAL(5,1), reducedTax DECIMAL(5,1), startDate DATE, PRIMARY KEY( id ) ); INSERT INTO taxes ( fullTax, reducedTax, startDate ) VALUES (16.0, 7.0, '1998-04-01' ); INSERT INTO taxes ( fullTax, reducedTax, startDate ) VALUES (19.0, 7.0, '2007-01-01' ); kraft-0.90/database/mysql/migration/15_dbmigrate.sql000066400000000000000000000006201357523730400224460ustar00rootroot00000000000000ALTER TABLE document ADD COLUMN projectLabel VARCHAR(255) AFTER language; ALTER TABLE archdoc ADD COLUMN projectLabel VARCHAR(255) AFTER language; ALTER TABLE archdoc ADD COLUMN tax DECIMAL(5,1) AFTER projectLabel; ALTER TABLE archdoc ADD COLUMN reducedTax DECIMAL(5,1) AFTER tax; ALTER TABLE archdocpos DROP COLUMN vat; ALTER TABLE archdocpos ADD COLUMN taxType INT DEFAULT 0 AFTER overallPrice; kraft-0.90/database/mysql/migration/16_dbmigrate.sql000066400000000000000000000013351357523730400224530ustar00rootroot00000000000000ALTER TABLE CalcMaterials RENAME TO CalcMaterialsOld; CREATE TABLE CalcMaterials ( MCalcID INT NOT NULL AUTO_INCREMENT, TemplID INT NOT NULL, materialID INT NOT NULL, percent INT DEFAULT 0, amount DECIMAL(10,2), modDate TIMESTAMP, PRIMARY KEY(MCalcID) ); INSERT INTO CalcMaterials (TemplID, materialID, amount, percent, modDate) SELECT CalcMaterialsOld.TemplID, CalcMaterialDetails.materialID, CalcMaterialDetails.amount, CalcMaterialsOld.percent, CalcMaterialsOld.modDate FROM CalcMaterialDetails INNER JOIN CalcMaterialsOld ON CalcMaterialDetails.CalcID=CalcMaterialsOld.MCalcID; DROP TABLE IF EXISTS CalcMaterialsOld; DROP TABLE IF EXISTS CalcMaterialDetails; DROP TABLE IF EXISTS attribute_old;kraft-0.90/database/mysql/migration/17_dbmigrate.sql000066400000000000000000000002021357523730400224440ustar00rootroot00000000000000ALTER TABLE CatalogChapters ADD COLUMN parentChapter int(11) default 0; ALTER TABLE CatalogChapters ADD COLUMN description text; kraft-0.90/database/mysql/migration/18_dbmigrate.sql000066400000000000000000000003341357523730400224530ustar00rootroot00000000000000# message Adding sort column and usage statistics ALTER TABLE Catalog ADD COLUMN sortKey INT(11) default 0; ALTER TABLE Catalog ADD COLUMN lastUsed DATETIME; ALTER TABLE Catalog ADD COLUMN useCounter INT(11) default 0; kraft-0.90/database/mysql/migration/19_dbmigrate.sql000066400000000000000000000025301357523730400224540ustar00rootroot00000000000000# message Create new document type delivery note INSERT INTO DocTypes (name) VALUES ('Lieferschein'); SET @lsId := LAST_INSERT_ID(); INSERT INTO attributes (hostObject, hostId, name, valueIsList) VALUES ('DocType', @lsId, 'HidePrices', 1); INSERT INTO DocTypes (name) VALUES ('Delivery Receipt'); SET @nodId := LAST_INSERT_ID(); INSERT INTO attributes (hostObject, hostId, name, valueIsList) VALUES ('DocType', @nodId, 'HidePrices', 1); # message Add more document relation settings # Lieferschein follows Angebot SELECT @item := docTypeID FROM DocTypes WHERE name="Angebot"; # mayfail INSERT INTO DocTypeRelations VALUES( @item, @lsId, 10 ); # Rechnung follows Lieferschein SELECT @follower := docTypeID FROM DocTypes WHERE name="Rechnung"; # mayfail INSERT INTO DocTypeRelations VALUES( @lsId, @follower, 11 ); # Delivery Receipt follows Offer SELECT @item := docTypeID FROM DocTypes WHERE name="Offer"; # mayfail INSERT INTO DocTypeRelations VALUES( @item, @nodId, 12 ); # Invoice follows Delivery Receipt SELECT @follower := docTypeID FROM DocTypes WHERE name="Invoice"; # mayfail INSERT INTO DocTypeRelations VALUES( @nodId, @follower, 13 ); # enhance the clientID col in document because the ids can be larger. ALTER TABLE document CHANGE COLUMN clientID clientID VARCHAR(255); ALTER TABLE archdoc CHANGE COLUMN clientUid clientUid VARCHAR(255); # Done. kraft-0.90/database/mysql/migration/20_dbmigrate.sql000066400000000000000000000004001357523730400224360ustar00rootroot00000000000000ALTER TABLE CalcTime ADD COLUMN timeUnit INT default 0; -- Add a unit id ALTER TABLE DocCalcTime ADD COLUMN timeUnit INT default 0; -- Add a unit id UPDATE CalcTime set timeUnit=0; -- Update existing CalcTime entries. UPDATE DocCalcTime set timeUnit=0; kraft-0.90/database/mysql/migration/21_dbmigrate.sql000066400000000000000000000003431357523730400224450ustar00rootroot00000000000000ALTER TABLE document ADD COLUMN predecessor VARCHAR(32) AFTER projectLabel; ALTER TABLE archdoc ADD COLUMN predecessor VARCHAR(32) AFTER projectLabel; UPDATE document SET predecessor = 0; UPDATE archdoc SET predecessor = 0; kraft-0.90/database/mysql/migration/2_dbmigrate.sql000066400000000000000000000021551357523730400223670ustar00rootroot00000000000000# message: Creating document position calulation tables ; CREATE TABLE DocCalcTime ( TCalcID INT NOT NULL AUTO_INCREMENT, TemplID INT NOT NULL, name VARCHAR(255), minutes INT default 0, percent INT default 0, stdHourSet INT default 0, allowGlobal INT default 1, modDate TIMESTAMP, PRIMARY KEY( TCalcID), INDEX(TemplID) ); CREATE TABLE DocCalcFixed( FCalcID INT NOT NULL AUTO_INCREMENT, TemplID INT NOT NULL, name VARCHAR(255), amount DECIMAL(10,2) default 1.0, price DECIMAL(10,2), percent INT default 0, modDate TIMESTAMP, PRIMARY KEY(FCalcID), INDEX(TemplID) ); CREATE TABLE DocCalcMaterials( MCalcID INT NOT NULL AUTO_INCREMENT, TemplID INT NOT NULL, name VARCHAR(255), percent INT default 0, modDate TIMESTAMP, PRIMARY KEY(MCalcID), INDEX(TemplID) ); CREATE TABLE DocCalcMaterialDetails( MCalcDetailID INT NOT NULL AUTO_INCREMENT, CalcID INT NOT NULL, materialID INT NOT NULL, amount DECIMAL(10,2), PRIMARY KEY(MCalcDetailID), INDEX(CalcID) ); kraft-0.90/database/mysql/migration/3_dbmigrate.sql000066400000000000000000000003421357523730400223640ustar00rootroot00000000000000CREATE TABLE plantPrices ( matchCode VARCHAR(255), price DECIMAL(8,2), lastUpdate TIMESTAMP, PRIMARY KEY( matchCode ) ); ALTER TABLE document ADD COLUMN docDescription TEXT AFTER docType; kraft-0.90/database/mysql/migration/4_dbmigrate.sql000066400000000000000000000077461357523730400224040ustar00rootroot00000000000000CREATE TABLE DocTexts ( docTextID INT NOT NULL AUTO_INCREMENT, name VARCHAR(64), description TEXT, text TEXT, docType VARCHAR( 64 ), textType VARCHAR( 64 ), modDate TIMESTAMP, PRIMARY KEY( docTextID ), INDEX( docType, textType ) ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Offer', 'Header Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Offer', 'Footer Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Invoice', 'Header Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Invoice', 'Footer Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Acceptance of Order', 'Header Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Acceptance of Order', 'Footer Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Angebot', 'Kopf Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Angebot', 'Fuß Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Rechnung', 'Kopf Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Rechnung', 'Fuß Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Auftragsbestätigung', 'Kopf Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Auftragsbestätigung', 'Fuß Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Offer', 'Footer Text' FROM wordLists WHERE category='docFooter_Offer'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Offer', 'Header Text' FROM wordLists WHERE category='docHeader_Offer'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Invoice', 'Footer Text' FROM wordLists WHERE category='docFooter_Invoice'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Invoice', 'Header Text' FROM wordLists WHERE category='docHeader_Invoice'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Acceptance of Order', 'Footer Text' FROM wordLists WHERE category='docFooter_Acceptance of Order'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Acceptance of Order', 'Header Text' FROM wordLists WHERE category='docHeader_Acceptance of Order'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Angebot', 'Fuß Text' FROM wordLists WHERE category='docFooter_Angebot'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Angebot', 'Kopf Text' FROM wordLists WHERE category='docHeader_Angebot'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Rechnung', 'Fuß Text' FROM wordLists WHERE category='docFooter_Rechnung'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Rechnung', 'Kopf Text' FROM wordLists WHERE category='docHeader_Rechnung'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Auftragsbestätigung', 'Fuß Text' FROM wordLists WHERE category='docFooter_Auftragsbestätigung'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Auftragsbestätigung', 'Kopf Text' FROM wordLists WHERE category='docHeader_Auftragsbestätigung'; kraft-0.90/database/mysql/migration/5_dbmigrate.sql000066400000000000000000000043051357523730400223710ustar00rootroot00000000000000# message Creating attributes table... CREATE TABLE attributes ( hostObject VARCHAR(64), hostId INT NOT NULL, name VARCHAR(64), value MEDIUMTEXT, PRIMARY KEY( hostObject, hostId, name ) ); # message Creating attributes for archived documents CREATE TABLE archPosAttribs ( archPosAttribId INT NOT NULL AUTO_INCREMENT, archDocID INT NOT NULL, name VARCHAR(64), value VARCHAR(64), PRIMARY KEY( archPosAttribId ) ); # message Adding position type and overall price ot archdocpositions ALTER TABLE archdocpos ADD COLUMN kind VARCHAR(64) AFTER ordNumber; ALTER TABLE archdocpos ADD COLUMN overallPrice DECIMAL(10,2) AFTER price; # message Changing old kinds to Normal UPDATE archdocpos SET kind = "Normal"; # message Calculating archive position price UPDATE archdocpos SET overallPrice = ROUND( price * amount, 2); # message Creating Document Type table CREATE TABLE DocTypes ( docTypeID INT NOT NULL AUTO_INCREMENT, name VARCHAR(255), PRIMARY KEY( docTypeID ) ); # message Filling doc type attributes INSERT INTO DocTypes (name) VALUES ( 'Offer' ); SET @dtId := LAST_INSERT_ID(); INSERT INTO attributes VALUES ('DocType', @dtId, 'AllowDemand', 'true'); INSERT INTO attributes VALUES ('DocType', @dtId, 'AllowAlternative', 'true'); INSERT INTO DocTypes (name) VALUES ( 'Acceptance of Order' ); SET @dtId := LAST_INSERT_ID(); INSERT INTO attributes VALUES ('DocType', @dtId, 'AllowDemand', 'true'); INSERT INTO attributes VALUES ('DocType', @dtId, 'AllowAlternative', 'true'); INSERT INTO DocTypes (name) VALUES ( 'Invoice' ); # message Filling doc type attributes INSERT INTO DocTypes (name) VALUES ( 'Angebot' ); SET @dtId := LAST_INSERT_ID(); INSERT INTO attributes VALUES ('DocType', @dtId, 'AllowDemand', 'true'); INSERT INTO attributes VALUES ('DocType', @dtId, 'AllowAlternative', 'true'); INSERT INTO DocTypes (name) VALUES ( 'Auftragsbestätigung' ); SET @dtId := LAST_INSERT_ID(); INSERT INTO attributes VALUES ('DocType', @dtId, 'AllowDemand', 'true'); INSERT INTO attributes VALUES ('DocType', @dtId, 'AllowAlternative', 'true'); INSERT INTO DocTypes (name) VALUES ( 'Rechnung' ); # message Drop an unused table archdocStates DROP TABLE IF EXISTS archdocStates; kraft-0.90/database/mysql/migration/6_dbmigrate.sql000066400000000000000000000004511357523730400223700ustar00rootroot00000000000000# message Localisation information on document level ALTER TABLE document ADD country VARCHAR(32) AFTER posttext; ALTER TABLE document ADD language VARCHAR(32) AFTER country; ALTER TABLE archdoc ADD country VARCHAR(32) AFTER posttext; ALTER TABLE archdoc ADD language VARCHAR(32) AFTER country; kraft-0.90/database/mysql/migration/7_dbmigrate.sql000066400000000000000000000001051357523730400223650ustar00rootroot00000000000000 ALTER TABLE archdoc ADD clientUid VARCHAR(32) AFTER clientAddress; kraft-0.90/database/mysql/migration/8_dbmigrate.sql000066400000000000000000000027711357523730400224010ustar00rootroot00000000000000 CREATE TABLE DocTypeRelations ( typeId INT NOT NULL, followerId INT NOT NULL, sequence INT NOT NULL, PRIMARY KEY( typeId, followerId ) ); # Acceptance of Order follows Offer SELECT @item := docTypeID FROM DocTypes WHERE name="Offer"; SELECT @follower := docTypeID FROM DocTypes WHERE name="Acceptance of Order"; INSERT INTO DocTypeRelations VALUES( @item, @follower, 1 ); # Invoice follorws Offer SELECT @item := docTypeID FROM DocTypes WHERE name="Offer"; SELECT @follower := docTypeID FROM DocTypes WHERE name="Invoice"; INSERT INTO DocTypeRelations VALUES( @item, @follower, 2 ); # Invoice follows Acceptance of Order SELECT @item := docTypeID FROM DocTypes WHERE name="Acceptance of Order"; SELECT @follower := docTypeID FROM DocTypes WHERE name="Invoice"; INSERT INTO DocTypeRelations VALUES( @item, @follower, 3 ); # Acceptance of Order follows Offer SELECT @item := docTypeID FROM DocTypes WHERE name="Angebot"; SELECT @follower := docTypeID FROM DocTypes WHERE name="Auftragsbestätigung"; INSERT INTO DocTypeRelations VALUES( @item, @follower, 4 ); # Invoice follorws Offer SELECT @item := docTypeID FROM DocTypes WHERE name="Angebot"; SELECT @follower := docTypeID FROM DocTypes WHERE name="Rechnung"; INSERT INTO DocTypeRelations VALUES( @item, @follower, 5 ); # Invoice follows Acceptance of Order SELECT @item := docTypeID FROM DocTypes WHERE name like "Auftragsbest%"; SELECT @follower := docTypeID FROM DocTypes WHERE name="Rechnung"; INSERT INTO DocTypeRelations VALUES( @item, @follower, 6 ); kraft-0.90/database/mysql/migration/9_dbmigrate.sql000066400000000000000000000007531357523730400224000ustar00rootroot00000000000000# message add a document type id to text table alter table DocTexts add column docTypeId int after docType; # message populate the doc type id column in docTexts update DocTexts set docTypeId=( SELECT docTypeID FROM DocTypes WHERE name=docType ); # message create a type column for the docposition alter table docposition add column postype VARCHAR(64) AFTER text; # message create type column for the archdocpos table alter table archdocpos add column postype VARCHAR(64) AFTER kind; kraft-0.90/database/mysql/migration/CMakeLists.txt000066400000000000000000000002711357523730400222240ustar00rootroot00000000000000########### install files ############### file(GLOB mig_scripts *_dbmigrate.sql) install(FILES README ${mig_scripts} DESTINATION ${DATA_INSTALL_DIR}/kraft/dbmigrate/mysql) kraft-0.90/database/mysql/migration/README000066400000000000000000000014721357523730400203500ustar00rootroot00000000000000Kraft Database Migration ======================== The Kraft database schema might change over the time. To achieve that smoothly for the users, here is a database migration system. Every version of Kraft has a hardcoded version of the required database schema version. In the Kraft database there is a system table that carries the version of the current running database schema. In case the current database version is lower than the required, Kraft looks in this migration directory if there is a script starting with the number "current version +1". If found, Kraft executes the sql commands contained in the file. After all are finished, the version in the database system table is updated. Note that the migration file my contain lines like # message: bla bla Kraft shows the message lines in the status line. kraft-0.90/database/sqlite3/000077500000000000000000000000001357523730400157125ustar00rootroot00000000000000kraft-0.90/database/sqlite3/CMakeLists.txt000066400000000000000000000003051357523730400204500ustar00rootroot00000000000000add_subdirectory(migration) ########### install files ############### install(FILES create_schema.sql fill_schema_de.sql fill_schema_en.sql DESTINATION ${DATA_INSTALL_DIR}/kraft/dbinit/sqlite3) kraft-0.90/database/sqlite3/create_schema.sql000066400000000000000000000160211357523730400212160ustar00rootroot00000000000000 CREATE TABLE preisArten ( preisArtID INTEGER PRIMARY KEY ASC autoincrement, preisArt VARCHAR(64) NOT NULL ); CREATE TABLE wordLists( category VARCHAR(64), word VARCHAR(255), PRIMARY KEY( category, word ) ); CREATE TABLE CatalogSet( catalogSetID INTEGER PRIMARY KEY ASC autoincrement, name VARCHAR(255), description VARCHAR(255), catalogType VARCHAR(64), sortKey INT NOT NULL ); CREATE TABLE CatalogChapters( chapterID INTEGER PRIMARY KEY ASC autoincrement, catalogSetID INT NOT NULL, chapter VARCHAR(255), sortKey INT NOT NULL ); CREATE INDEX chapterIndx ON CatalogChapters( chapter ); CREATE TABLE Catalog ( TemplID INTEGER PRIMARY KEY ASC autoincrement, chapterID INT NOT NULL default 1, unitID INT NOT NULL, Floskel TEXT, Gewinn DECIMAL(6,2) default 0, zeitbeitrag TINYINT default 1, enterDatum DATETIME, modifyDatum TIMESTAMP(14), Preisart INT NOT NULL default 1, EPreis DECIMAL(10,2) default 0 ); CREATE INDEX chapterIdIndx ON Catalog( chapterID ); CREATE TRIGGER insert_catalog_timeEnter AFTER INSERT ON Catalog BEGIN UPDATE Catalog SET enterDatum = DATETIME('NOW') WHERE TemplID = new.TemplID; END; CREATE TRIGGER update_catalog_timeEnter AFTER UPDATE ON Catalog BEGIN UPDATE Catalog SET modifyDatum = DATETIME('NOW') WHERE TemplID = new.TemplID; END; UPDATE Catalog SET modifyDatum=enterDatum; CREATE TABLE CalcTime ( TCalcID INTEGER PRIMARY KEY ASC autoincrement, TemplID INT NOT NULL, name VARCHAR(255), minutes INT default 0, percent INT default 0, stdHourSet INT default 0, allowGlobal INT default 1, modDate TIMESTAMP(14) ); CREATE INDEX calcTimeIndx ON CalcTime( TemplID ); CREATE TRIGGER update_calcTime_modifyDate AFTER UPDATE ON CalcTime BEGIN UPDATE CalcTime SET modDate = DATETIME('NOW') WHERE TCalcID = new.TCalcID; END; CREATE TABLE CalcFixed( FCalcID INTEGER PRIMARY KEY ASC autoincrement, TemplID INT NOT NULL, name VARCHAR(255), amount DECIMAL(10,2) default 1.0, price DECIMAL(10,2), percent INT default 0, modDate TIMESTAMP(14) ); CREATE INDEX calcFixedIndx ON CalcFixed( TemplID ); CREATE TRIGGER update_calcFixed_modifyDate AFTER UPDATE ON CalcFixed BEGIN UPDATE CalcFixed SET modDate = DATETIME('NOW') WHERE FCalcID = new.FCalcID; END; CREATE TABLE CalcMaterials( MCalcID INTEGER PRIMARY KEY ASC autoincrement, TemplID INT NOT NULL, name VARCHAR(255), percent INT default 0, modDate TIMESTAMP(14) ); CREATE INDEX calcMatIndx ON CalcMaterials( TemplID ); CREATE TRIGGER update_calcMaterials_modifyDate AFTER UPDATE ON CalcMaterials BEGIN UPDATE CalcMaterials SET modDate = DATETIME('NOW') WHERE MCalcID = new.MCalcID; END; CREATE TABLE CalcMaterialDetails( MCalcDetailID INTEGER PRIMARY KEY ASC autoincrement, CalcID INT NOT NULL, materialID INT NOT NULL, amount DECIMAL(10,2) ); CREATE INDEX calcIdIndx ON CalcMaterialDetails( CalcID ); CREATE TABLE units( unitID INTEGER PRIMARY KEY ASC autoincrement, unitShort VARCHAR(255), unitLong VARCHAR(255), unitPluShort VARCHAR(255), unitPluLong VARCHAR(255) ); CREATE INDEX unitShortIndx ON units( unitShort ); CREATE TABLE stockMaterial ( matID INTEGER PRIMARY KEY ASC autoincrement, chapterID INT NOT NULL default 1, material mediumtext, unitID INT NOT NULL, perPack DECIMAL(10,2), priceIn DECIMAL(10,2), priceOut DECIMAL(10,2), enterDate DATETIME, modifyDate TIMESTAMP(14) ); CREATE INDEX matChapterIndx ON stockMaterial( chapterID ); CREATE TRIGGER insert_material_enterDate AFTER INSERT ON stockMaterial BEGIN UPDATE stockMaterial SET enterDate = DATETIME('NOW') WHERE matID = new.matID; END; CREATE TRIGGER update_material_modifyDate AFTER UPDATE ON stockMaterial BEGIN UPDATE stockMaterial SET modifyDate = DATETIME('NOW') WHERE matID = new.matID; END; CREATE TABLE stdSaetze( stdSaetzeID INTEGER PRIMARY KEY ASC autoincrement, name VARCHAR(255), price DECIMAL(10,2), sortKey int ); CREATE TABLE document( docID INTEGER PRIMARY KEY ASC autoincrement, ident VARCHAR(32), docType VARCHAR(255), docDescription TEXT, clientID VARCHAR(32), clientAddress TEXT, salut VARCHAR(255), goodbye VARCHAR(128), lastModified TIMESTAMP, date DATE, pretext TEXT, posttext TEXT, country VARCHAR(32), language VARCHAR(32), projectLabel VARCHAR(255) ); CREATE INDEX identIndx ON document( ident ); CREATE INDEX clientIndx ON document( clientID ); CREATE TRIGGER update_document AFTER UPDATE ON document BEGIN UPDATE document SET lastModified = DATETIME('NOW') WHERE docID = new.docID; END; CREATE TABLE docposition( positionID INTEGER PRIMARY KEY ASC autoincrement, docID INT NOT NULL, ordNumber INT NOT NULL, text TEXT, postype VARCHAR(64), amount DECIMAL(10,2), unit INT, price DECIMAL(10,2), taxType INT default 3 ); CREATE INDEX docIdIndx ON docposition( docID ); CREATE UNIQUE INDEX ordIndx ON docposition( docID, ordNumber ); CREATE TABLE archdocStates( stateID INTEGER PRIMARY KEY ASC autoincrement, state VARCHAR(32) ); CREATE TABLE archdoc( archDocID INTEGER PRIMARY KEY ASC autoincrement, ident VARCHAR(32), docType VARCHAR(255), docDescription TEXT, clientAddress TEXT, clientUid VARCHAR(32), salut VARCHAR(255), goodbye VARCHAR(128), printDate TIMESTAMP, date DATE, pretext TEXT, posttext TEXT, country VARCHAR(32), language VARCHAR(32), projectLabel VARCHAR(255), tax DECIMAL(5,1), reducedTax DECIMAL(5,1), state int ); CREATE INDEX archIdentIndx ON archdoc( ident ); CREATE TRIGGER update_archdoc AFTER UPDATE ON archdoc BEGIN UPDATE archDoc SET printDate = DATETIME('NOW') WHERE archDocID = new.archDocID; END; CREATE TABLE archdocpos( archPosID INTEGER PRIMARY KEY ASC autoincrement, archDocID INT NOT NULL, ordNumber INT NOT NULL, kind VARCHAR(64), postype VARCHAR(64), text TEXT, amount DECIMAL(10,2), unit VARCHAR(64), price DECIMAL(10,2), overallPrice DECIMAL(10,2), taxType INT default 0 ); CREATE INDEX archDocIdIndx ON archdocpos( archDocID ); CREATE UNIQUE INDEX archOrdIndx ON archdocpos( archDocID, ordNumber ); CREATE TABLE kraftsystem( dbschemaversion INT NOT NULL, updateUser VARCHAR(256) ); INSERT INTO kraftsystem ( dbschemaversion ) VALUES ( 1 ); kraft-0.90/database/sqlite3/fill_schema_de.sql000066400000000000000000000106531357523730400213560ustar00rootroot00000000000000DELETE FROM preisArten; INSERT INTO preisArten (preisArt) VALUES ('offen'); INSERT INTO preisArten (preisArt) VALUES ('selbsterstellt'); INSERT INTO preisArten (preisArt) VALUES ('kalkuliert'); DELETE FROM CatalogSet; INSERT INTO CatalogSet (name, description, catalogType, sortKey) VALUES ( "Standard Mustertexte", "Kalkulierte Musterposten", "TemplCatalog", 1 ); DELETE FROM CatalogChapters; INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Arbeit', 1, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Mustertexte")); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Maschine', 2, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Mustertexte") ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Materialeinsatz', 3, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Mustertexte") ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Service', 4, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Mustertexte") ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Sonstige', 5, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Mustertexte") ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Transport', 6, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Mustertexte") ); INSERT INTO CatalogSet( name, description, catalogType, sortKey) VALUES ("Material", "Materialkatalog", "MaterialCatalog", 2 ); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Schüttgüter', 3, (SELECT catalogSetID FROM CatalogSet WHERE name="Material")); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Naturstein', 2, (SELECT catalogSetID FROM CatalogSet WHERE name="Material")); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Beton', 1, (SELECT catalogSetID FROM CatalogSet WHERE name="Material")); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Rohre', 4, (SELECT catalogSetID FROM CatalogSet WHERE name="Material")); DELETE FROM units; INSERT INTO units (unitShort, unitLong, unitPluShort, unitPluLong) VALUES ('m', 'Meter', 'm', 'Meter' ); INSERT INTO units (unitShort, unitLong, unitPluShort, unitPluLong) VALUES ('qm', 'Quadratmeter', 'qm', 'Quadratmeter' ); INSERT INTO units (unitShort, unitLong, unitPluShort, unitPluLong) VALUES ('cbm', 'Kubikmeter', 'cbm', 'Kubikmeter' ); INSERT INTO units (unitShort, unitLong, unitPluShort, unitPluLong) VALUES ('Sck.', 'Sack', 'Sck.', 'Säcke' ); INSERT INTO units (unitShort, unitLong, unitPluShort, unitPluLong) VALUES ( 'l', 'Liter', 'l', 'Liter' ); INSERT INTO units (unitShort, unitLong, unitPluShort, unitPluLong) VALUES ('kg', 'Kilogramm', 'kg', 'Kilogramm' ); INSERT INTO units (unitShort, unitLong, unitPluShort, unitPluLong) VALUES ('Stck.', 'Stueck', 'Stck.', 'Stück' ); INSERT INTO units (unitShort, unitLong, unitPluShort, unitPluLong) VALUES ('t', 'Tonne', 't', 'Tonnen' ); INSERT INTO units (unitShort, unitLong, unitPluShort, unitPluLong) VALUES ('pausch.', 'pauschal', 'pausch.', 'pauschal' ); INSERT INTO units (unitShort, unitLong, unitPluShort, unitPluLong) VALUES ('Std.', 'Stunde', 'Std.', 'Stunden' ); DELETE FROM stdSaetze; INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Geselle', 34.00, 1 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Meister', 39.00, 2 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Helfer', 30.00, 4 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Auszubildender', 21.00, 3 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Maschinenführer', 33.00, 5 ); DELETE FROM wordLists; INSERT INTO wordLists VALUES ('greeting', 'mit den besten Grüssen,' ); INSERT INTO wordLists VALUES ('greeting', 'liebe Grüsse,' ); INSERT INTO wordLists VALUES ('greeting', 'Hochachtungsvoll,' ); INSERT INTO wordLists VALUES ('greeting', 'mit freundlichem Gruß,' ); INSERT INTO wordLists VALUES ('salut', 'Sehr geehrter Herr %NAME,' ); INSERT INTO wordLists VALUES ('salut', 'Sehr geehrte Frau %NAME,' ); INSERT INTO wordLists VALUES ('salut', 'Sehr geehrte Frau %NAME, sehr geehrter Herr %NAME,' ); INSERT INTO wordLists VALUES ('salut', 'Lieber %GIVEN_NAME,' ); INSERT INTO wordLists VALUES ('salut', 'Liebe %GIVEN_NAME,' ); kraft-0.90/database/sqlite3/fill_schema_en.sql000066400000000000000000000102371357523730400213660ustar00rootroot00000000000000DELETE FROM preisArten; INSERT INTO preisArten VALUES (0, 'open'); INSERT INTO preisArten VALUES (1, 'manual'); INSERT INTO preisArten VALUES (2, 'calculated'); DELETE FROM CatalogSet; INSERT INTO CatalogSet (name, description, catalogType, sortKey) VALUES ( "Standard Templates", "A set of templates suitable for business", "TemplCatalog", 1 ); -- (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Templates") DELETE FROM CatalogChapters; INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Work', 1, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Templates")); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Machine', 2, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Templates")); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Material', 3, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Templates")); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Service', 4, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Templates")); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Transportation', 5, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Templates")); INSERT INTO CatalogChapters (chapter, sortKey, catalogSetID) VALUES ('Misc', 6, (SELECT catalogSetID FROM CatalogSet WHERE name="Standard Templates")); INSERT INTO CatalogSet( name, description, catalogType, sortKey) VALUES ("Material", "Material Catalog to Use in Calculations in Templates", "MaterialCatalog", 2 ); -- (SELECT catalogSetID FROM CatalogSet WHERE name="Material") INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Bulk Solids', 3, (SELECT catalogSetID FROM CatalogSet WHERE name="Material") ); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Stones', 2, (SELECT catalogSetID FROM CatalogSet WHERE name="Material")); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Concrete', 1, (SELECT catalogSetID FROM CatalogSet WHERE name="Material")); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Pipes', 4, (SELECT catalogSetID FROM CatalogSet WHERE name="Material")); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Wood', 5, (SELECT catalogSetID FROM CatalogSet WHERE name="Material")); INSERT INTO CatalogChapters ( chapter, sortKey, catalogSetID ) VALUES ('Art and Furnitures', 6, (SELECT catalogSetID FROM CatalogSet WHERE name="Material")); DELETE FROM units; INSERT INTO units VALUES (0, 'm', 'Meter', 'm', 'Meter' ); INSERT INTO units VALUES (1, 'sm', 'Squaremeter', 'qm', 'Squaremeter' ); INSERT INTO units VALUES (2, 'cbm', 'Cubikmeter', 'cbm', 'Cubikmeter' ); INSERT INTO units VALUES (3, 'Bag.', 'Bag', 'Bag', 'Bags' ); INSERT INTO units VALUES (4, 'l', 'Liter', 'l', 'Liter' ); INSERT INTO units VALUES (5, 'kg', 'Kilogramm', 'kg', 'Kilogramm' ); INSERT INTO units VALUES (6, 'Pcs.', 'Piece', 'Pcs.', 'Pieces' ); INSERT INTO units VALUES (7, 't', 'Ton', 't', 'Tons' ); INSERT INTO units VALUES (8, 'pausch.', 'pauschal', 'pausch.', 'pauschal' ); INSERT INTO units VALUES (9, 'Hour', 'Hour', 'Hours', 'Hours' ); DELETE FROM stdSaetze; INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Worker', 34.00, 1 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Master', 39.00, 2 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Assistant', 30.00, 4 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Trainee', 21.00, 3 ); INSERT INTO stdSaetze (name, price, sortKey) VALUES ('Machine Operator', 33.00, 5 ); DELETE FROM wordLists; INSERT INTO wordLists VALUES ('greeting', 'with kind regards,' ); INSERT INTO wordLists VALUES ('greeting', 'with best regards,' ); INSERT INTO wordLists VALUES ('greeting', 'yours faithfully,' ); INSERT INTO wordLists VALUES ('greeting', 'goodbye and thanks for the fish,' ); INSERT INTO wordLists VALUES ('greeting', 'goodbye' ); INSERT INTO wordLists VALUES ('salut', 'Dear Mr. %NAME' ); INSERT INTO wordLists VALUES ('salut', 'Dear Mrs. %NAME' ); INSERT INTO wordLists VALUES ('salut', 'Dear Mrs. %NAME, dear Mr. %NAME' ); INSERT INTO wordLists VALUES ('salut', 'Dear %GIVEN_NAME' ); kraft-0.90/database/sqlite3/migration/000077500000000000000000000000001357523730400177035ustar00rootroot00000000000000kraft-0.90/database/sqlite3/migration/10_dbmigrate.sql000066400000000000000000000050431357523730400226640ustar00rootroot00000000000000-- 5_dbmigrate.sql -- message Add a list value identification column to the attribute table --ALTER TABLE attributes ADD COLUMN valueIsList tinyint default 0; -- AFTER value; DROP TABLE IF EXISTS tmp_attrib; CREATE TABLE tmp_attrib ( id INTEGER PRIMARY KEY ASC autoincrement, hostObject VARCHAR(64), hostId INT, name VARCHAR(64), value MEDIUMTEXT, valueIsList TINYINT ); -- CREATE UNIQUE INDEX tmpIndx_10 ON tmp_attrib( hostObject, hostId, name ); INSERT INTO tmp_attrib (hostObject, hostId, name, value, valueIsList) SELECT hostObject, hostId, name, value, 0 FROM attributes; -- message Create an attribute value table CREATE TABLE IF NOT EXISTS attributeValues ( id INTEGER PRIMARY KEY ASC autoincrement, attributeId INT NOT NULL, value VARCHAR(255) ); CREATE INDEX attribValueIndx_10 ON attributeValues( attributeId ); -- message copy the attribute values over to the new attribute value table INSERT INTO attributeValues (attributeId, value) SELECT id, value FROM tmp_attrib WHERE value is not null; -- message drop the attrib column -- ALTER TABLE tmp_attrib DROP COLUMN value; -- DROP TABLE attributes; ALTER TABLE attributes RENAME TO attributes_unused; CREATE TABLE attributes ( id INTEGER PRIMARY KEY ASC autoincrement, hostObject VARCHAR(64), hostId INT, name VARCHAR(64), valueIsList TINYINT, relationTable varchar(64) default NULL, relationIDColumn varchar(64) default NULL, relationStringColumn varchar(64) default NULL ); CREATE UNIQUE INDEX attribIndx_10 ON attributes( hostObject, hostId, name ); INSERT INTO attributes (hostObject, hostId, name, valueIsList) SELECT hostObject, hostId, name, valueIsList FROM tmp_attrib; -- message create a table to keep tag templates CREATE TABLE IF NOT EXISTS tagTemplates ( tagTmplID INTEGER PRIMARY KEY ASC autoincrement, sortkey int NOT NULL, name varchar(255) default NULL, description varchar(255) default NULL, color char(7) default NULL ); INSERT INTO tagTemplates (sortkey, name, description, color) VALUES (3, 'Discount', 'Marks items to give discount on', '#ff1c1c' ); INSERT INTO tagTemplates (sortkey, name, description, color) VALUES (1, 'Material', 'Marks material', '#4e4e4e' ); INSERT INTO tagTemplates (sortkey, name, description, color) VALUES (2, 'Work', 'Marks working hour items', '#ffbb39' ); INSERT INTO tagTemplates (sortkey, name, description, color) VALUES (4, 'Plants', 'Marks plant items', '#26b913' ); DROP TABLE IF EXISTS tmp_attrib; DROP TABLE IF EXISTS attributes_unused; kraft-0.90/database/sqlite3/migration/11_dbmigrate.sql000066400000000000000000000006671357523730400226740ustar00rootroot00000000000000-- Columns already added in 5_dbmigrate.sql *sqlite workaround* -- message Adding relation table information to attribute table --ALTER TABLE attributes ADD COLUMN relationTable varchar(64) default NULL -- AFTER valueIsList; --ALTER TABLE attributes ADD COLUMN relationIDColumn varchar(64) default NULL; -- AFTER relationTable; --ALTER TABLE attributes ADD COLUMN relationStringColumn varchar(64) default NULL; -- AFTER relationIDColumn;kraft-0.90/database/sqlite3/migration/12_dbmigrate.sql000066400000000000000000000007011357523730400226620ustar00rootroot00000000000000CREATE TABLE numberCycles ( id INTEGER PRIMARY KEY ASC autoincrement, name VARCHAR(64) NOT NULL, lastIdentNumber INT NOT NULL, identTemplate VARCHAR(64) NOT NULL ); CREATE UNIQUE INDEX numCycleIdx_12 ON numberCycles( name ); INSERT INTO numberCycles (name, lastIdentNumber, identTemplate) VALUES ("default", (SELECT ifnull( 1+MAX(docID), 1 ) FROM document), '%i-%yyyy' ); kraft-0.90/database/sqlite3/migration/13_dbmigrate.sql000066400000000000000000000002571357523730400226710ustar00rootroot00000000000000--Column already added in create_schema.sql *Sqlite workaround* -- message Adding a taxType column --ALTER TABLE docposition ADD COLUMN taxType int default 3; -- AFTER price; kraft-0.90/database/sqlite3/migration/14_dbmigrate.sql000066400000000000000000000005531357523730400226710ustar00rootroot00000000000000-- message Add tax table CREATE TABLE taxes ( id INTEGER PRIMARY KEY ASC autoincrement, fullTax DECIMAL(5,1), reducedTax DECIMAL(5,1), startDate DATE ); INSERT INTO taxes ( fullTax, reducedTax, startDate ) VALUES (16.0, 7.0, '1998-04-01' ); INSERT INTO taxes ( fullTax, reducedTax, startDate ) VALUES (19.0, 7.0, '2007-01-01' ); kraft-0.90/database/sqlite3/migration/15_dbmigrate.sql000066400000000000000000000007451357523730400226750ustar00rootroot00000000000000-- message Add project label and tax to archive --ALTER TABLE document ADD COLUMN projectLabel VARCHAR(255); -- AFTER language; --ALTER TABLE archdoc ADD COLUMN projectLabel VARCHAR(255); -- AFTER language; --ALTER TABLE archdoc ADD COLUMN tax DECIMAL(5,1); -- AFTER projectLabel; --ALTER TABLE archdoc ADD COLUMN reducedTax DECIMAL(5,1); -- AFTER tax; -- ALTER TABLE archdocpos DROP COLUMN vat; --ALTER TABLE archdocpos ADD COLUMN taxType INT DEFAULT 0; -- AFTER overallPrice; kraft-0.90/database/sqlite3/migration/16_dbmigrate.sql000066400000000000000000000012561357523730400226740ustar00rootroot00000000000000ALTER TABLE CalcMaterials RENAME TO CalcMaterialsOld; CREATE TABLE CalcMaterials ( MCalcID INTEGER PRIMARY KEY ASC autoincrement, TemplID INT NOT NULL, materialID INT NOT NULL, percent INT DEFAULT 0, amount DECIMAL(10,2), modDate TIMESTAMP(14) ); INSERT INTO CalcMaterials (TemplID, materialID, amount, percent, modDate) SELECT CalcMaterialsOld.TemplID, CalcMaterialDetails.materialID, CalcMaterialDetails.amount, CalcMaterialsOld.percent, CalcMaterialsOld.modDate FROM CalcMaterialDetails INNER JOIN CalcMaterialsOld ON CalcMaterialDetails.CalcID=CalcMaterialsOld.MCalcID; DROP TABLE IF EXISTS CalcMaterialsOld; DROP TABLE IF EXISTS CalcMaterialDetails;kraft-0.90/database/sqlite3/migration/17_dbmigrate.sql000066400000000000000000000002011357523730400226620ustar00rootroot00000000000000ALTER TABLE CatalogChapters ADD COLUMN parentChapter int(11) default 0; ALTER TABLE CatalogChapters ADD COLUMN description text; kraft-0.90/database/sqlite3/migration/18_dbmigrate.sql000066400000000000000000000002431357523730400226710ustar00rootroot00000000000000 ALTER TABLE Catalog ADD COLUMN sortKey INT default 0; ALTER TABLE Catalog ADD COLUMN lastUsed DATETIME; ALTER TABLE Catalog ADD COLUMN useCounter INT default 0; kraft-0.90/database/sqlite3/migration/19_dbmigrate.sql000066400000000000000000000024661357523730400227030ustar00rootroot00000000000000 # message Create new document type delivery note INSERT INTO DocTypes (name) VALUES ('Lieferschein'); INSERT INTO attributes (hostObject, hostId, name, valueIsList) VALUES ('DocType', (SELECT docTypeID FROM DocTypes WHERE name='Lieferschein'), 'HidePrices', 'true'); INSERT INTO DocTypes (name) VALUES ('Delivery Receipt'); INSERT INTO attributes (hostObject, hostId, name, valueIsList) VALUES ('DocType', (SELECT docTypeID FROM DocTypes WHERE name='Delivery Receipt'), 'HidePrices', 'true'); # Delivery Receipt follows Offer # mayfail # message Add more document relation settings INSERT INTO DocTypeRelations VALUES( (SELECT docTypeID FROM DocTypes WHERE name="Offer"), (SELECT docTypeID FROM DocTypes WHERE name="Delivery Receipt"), 12 ); # mayfail INSERT INTO DocTypeRelations VALUES( (SELECT docTypeID FROM DocTypes WHERE name="Delivery Receipt"), (SELECT docTypeID FROM DocTypes WHERE name="Invoice"), 13 ); # Lieferschein follows Angebot # mayfail INSERT INTO DocTypeRelations VALUES( (SELECT docTypeID FROM DocTypes WHERE name="Angebot"), (SELECT docTypeID FROM DocTypes WHERE name="Lieferschein"), 10 ); # Rechnung follows Lieferschein # mayfail INSERT INTO DocTypeRelations VALUES( (SELECT docTypeID FROM DocTypes WHERE name="Lieferschein"), (SELECT docTypeID FROM DocTypes WHERE name="Rechnung"), 11 ); # Done. kraft-0.90/database/sqlite3/migration/20_dbmigrate.sql000066400000000000000000000004021357523730400226570ustar00rootroot00000000000000 ALTER TABLE CalcTime ADD COLUMN timeUnit INT default 0; -- Add a unit id ALTER TABLE DocCalcTime ADD COLUMN timeUnit INT default 0; -- Add a unit id UPDATE CalcTime set timeUnit=0; -- Update existing CalcTime entries. UPDATE DocCalcTime set timeUnit=0; kraft-0.90/database/sqlite3/migration/21_dbmigrate.sql000066400000000000000000000002471357523730400226670ustar00rootroot00000000000000--- Add a column predecessor to the document table ALTER TABLE document ADD COLUMN predecessor VARCHAR(32); ALTER TABLE archdoc ADD COLUMN predecessor VARCHAR(32); kraft-0.90/database/sqlite3/migration/2_dbmigrate.sql000066400000000000000000000034041357523730400226040ustar00rootroot00000000000000-- message: Creating document position calulation tables ; CREATE TABLE DocCalcTime ( TCalcID INTEGER PRIMARY KEY ASC autoincrement, TemplID INT NOT NULL, name VARCHAR(255), minutes INT default 0, percent INT default 0, stdHourSet INT default 0, allowGlobal INT default 1, modDate TIMESTAMP(14) ); CREATE INDEX calcTimeTemplIndx_2 ON DocCalcTime( TemplID ); CREATE TRIGGER update_docCalcTime_modDate AFTER UPDATE ON DocCalcTime BEGIN UPDATE DocCalcTime SET modDate = DATETIME('NOW') WHERE TCalcID = new.TCalcID; END; CREATE TABLE DocCalcFixed( FCalcID INTEGER PRIMARY KEY ASC autoincrement, TemplID INT NOT NULL, name VARCHAR(255), amount DECIMAL(10,2) default 1.0, price DECIMAL(10,2), percent INT default 0, modDate TIMESTAMP(14) ); CREATE INDEX CalcFixedTemplIndx_2 ON DocCalcFixed( TemplID ); CREATE TRIGGER update_docCalcFixed_modDate AFTER UPDATE ON DocCalcFixed BEGIN UPDATE DocCalcFixed SET modDate = DATETIME('NOW') WHERE FCalcID = new.FCalcID; END; CREATE TABLE DocCalcMaterials( MCalcID INTEGER PRIMARY KEY ASC autoincrement, TemplID INT NOT NULL, name VARCHAR(255), percent INT default 0, modDate TIMESTAMP(14) ); CREATE INDEX CalcMaterialTemplIndx_2 ON DocCalcMaterials( TemplID ); CREATE TRIGGER update_docCalcMaterials_modDate AFTER UPDATE ON DocCalcMaterials BEGIN UPDATE DocCalcMaterials SET modDate = DATETIME('NOW') WHERE MCalcID = new.MCalcID; END; CREATE TABLE DocCalcMaterialDetails( MCalcDetailID INTEGER PRIMARY KEY ASC autoincrement, CalcID INT NOT NULL, materialID INT NOT NULL, amount DECIMAL(10,2) ); CREATE INDEX CalcMaterialDetailsCalcIDIndx_2 ON DocCalcMaterialDetails( CalcID ); kraft-0.90/database/sqlite3/migration/3_dbmigrate.sql000066400000000000000000000007541357523730400226120ustar00rootroot00000000000000-- message Add plant Prices table CREATE TABLE plantPrices ( matchCode VARCHAR(255), price DECIMAL(8,2), lastUpdate TIMESTAMP, PRIMARY KEY( matchCode ) ); CREATE TRIGGER update_plantPrices AFTER UPDATE ON plantPrices BEGIN UPDATE plantPrices SET lastUpdate = DATETIME('NOW') WHERE matchCode = new.matchCode; END; -- Columns already added in create_schema.sql *sqlite workaround* --ALTER TABLE document ADD COLUMN docDescription TEXT AFTER docType; kraft-0.90/database/sqlite3/migration/4_dbmigrate.sql000066400000000000000000000103421357523730400226050ustar00rootroot00000000000000-- message Create DocTexts table CREATE TABLE DocTexts ( docTextID INTEGER PRIMARY KEY ASC autoincrement, name VARCHAR(64), description TEXT, text TEXT, docType VARCHAR( 64 ), docTypeId int, textType VARCHAR( 64 ), modDate TIMESTAMP(14) -- INDEX( docType, textType ) ); CREATE INDEX DocTextsIndx_4 ON DocTexts (docType, textType); CREATE TRIGGER update_docTexts AFTER UPDATE ON DocTexts BEGIN UPDATE DocTexts SET modDate = DATETIME('NOW') WHERE docTextID = new.docTextID; END; INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Offer', 'Header Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Offer', 'Footer Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Invoice', 'Header Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Invoice', 'Footer Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Acceptance of Order', 'Header Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Acceptance of Order', 'Footer Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Angebot', 'Kopf Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Angebot', 'Fuß Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Rechnung', 'Kopf Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Rechnung', 'Fuß Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Auftragsbestätigung', 'Kopf Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) VALUES ( 'Standard', 'Please edit me - Bitte passe mich an!', 'Auftragsbestätigung', 'Fuß Text' ); INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Offer', 'Footer Text' FROM wordLists WHERE category='docFooter_Offer'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Offer', 'Header Text' FROM wordLists WHERE category='docHeader_Offer'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Invoice', 'Footer Text' FROM wordLists WHERE category='docFooter_Invoice'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Invoice', 'Header Text' FROM wordLists WHERE category='docHeader_Invoice'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Acceptance of Order', 'Footer Text' FROM wordLists WHERE category='docFooter_Acceptance of Order'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Acceptance of Order', 'Header Text' FROM wordLists WHERE category='docHeader_Acceptance of Order'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Angebot', 'Fuß Text' FROM wordLists WHERE category='docFooter_Angebot'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Angebot', 'Kopf Text' FROM wordLists WHERE category='docHeader_Angebot'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Rechnung', 'Fuß Text' FROM wordLists WHERE category='docFooter_Rechnung'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Rechnung', 'Kopf Text' FROM wordLists WHERE category='docHeader_Rechnung'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Auftragsbestätigung', 'Fuß Text' FROM wordLists WHERE category='docFooter_Auftragsbestätigung'; INSERT INTO DocTexts ( name, text, docType, textType ) SELECT 'Standard', word, 'Auftragsbestätigung', 'Kopf Text' FROM wordLists WHERE category='docHeader_Auftragsbestätigung'; kraft-0.90/database/sqlite3/migration/5_dbmigrate.sql000066400000000000000000000060371357523730400226140ustar00rootroot00000000000000-- message Creating attributes table... CREATE TABLE attributes ( hostObject VARCHAR(64), hostId INT NOT NULL, name VARCHAR(64), value MEDIUMTEXT, valueIsList tinyint default 0, relationTable VARCHAR(64) default NULL, relationIDColumn VARCHAR(64) default NULL, relationStringColumn VARCHAR(64) default NULL, PRIMARY KEY( hostObject, hostId, name ) ); -- message Creating attributes for archived documents CREATE TABLE archPosAttribs ( archPosAttribId INTEGER PRIMARY KEY ASC autoincrement, archDocID INT NOT NULL, name VARCHAR(64), value VARCHAR(64) ); -- Columns already added in create_schema.sql *sqlite workaround* -- message Adding position type and overall price ot archdocpositions --ALTER TABLE archdocpos ADD COLUMN kind VARCHAR(64); -- AFTER ordNumber; --ALTER TABLE archdocpos ADD COLUMN overallPrice DECIMAL(10,2); -- AFTER price; -- message Changing old kinds to Normal UPDATE archdocpos SET kind = "Normal"; -- message Calculating archive position price UPDATE archdocpos SET overallPrice = ROUND( price * amount, 2); -- message Creating Document Type table CREATE TABLE DocTypes ( docTypeID INTEGER PRIMARY KEY ASC autoincrement, name VARCHAR(255) ); -- message Filling doc type attributes INSERT INTO DocTypes (name) VALUES ( 'Offer' ); INSERT INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', (SELECT docTypeID FROM DocTypes WHERE name="Offer"), 'AllowDemand', 'true'); INSERT INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', (SELECT docTypeID FROM DocTypes WHERE name="Offer"), 'AllowAlternative', 'true'); INSERT INTO DocTypes (name) VALUES ( 'Acceptance of Order' ); INSERT INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', (SELECT docTypeID FROM DocTypes WHERE name="Acceptance of Order"), 'AllowDemand', 'true'); INSERT INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', (SELECT docTypeID FROM DocTypes WHERE name="Acceptance of Order"), 'AllowAlternative', 'true'); INSERT INTO DocTypes (name) VALUES ( 'Invoice' ); -- message Filling doc type attributes INSERT INTO DocTypes (name) VALUES ( 'Angebot' ); INSERT INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', (SELECT docTypeID FROM DocTypes WHERE name="Angebot"), 'AllowDemand', 'true'); INSERT INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', (SELECT docTypeID FROM DocTypes WHERE name="Angebot"), 'AllowAlternative', 'true'); INSERT INTO DocTypes (name) VALUES ( 'Auftragsbestätigung' ); INSERT INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', (SELECT docTypeID FROM DocTypes WHERE name="Auftragsbestätigung"), 'AllowDemand', 'true'); INSERT INTO attributes (hostObject, hostId, name, value) VALUES ('DocType', (SELECT docTypeID FROM DocTypes WHERE name="Auftragsbestätigung"), 'AllowAlternative', 'true'); INSERT INTO DocTypes (name) VALUES ( 'Rechnung' ); -- message Drop an unused table archdocStates DROP TABLE IF EXISTS archdocStates; kraft-0.90/database/sqlite3/migration/6_dbmigrate.sql000066400000000000000000000004771357523730400226170ustar00rootroot00000000000000-- message Localisation information on document level --ALTER TABLE document ADD country VARCHAR(32); -- AFTER posttext; --ALTER TABLE document ADD language VARCHAR(32);-- AFTER country; --ALTER TABLE archdoc ADD country VARCHAR(32);-- AFTER posttext; --ALTER TABLE archdoc ADD language VARCHAR(32);-- AFTER country; kraft-0.90/database/sqlite3/migration/7_dbmigrate.sql000066400000000000000000000002141357523730400226050ustar00rootroot00000000000000-- Columns already added in create_schema.sql *sqlite workaround* -- ALTER TABLE archdoc ADD clientUid VARCHAR(32);-- AFTER clientAddress;kraft-0.90/database/sqlite3/migration/8_dbmigrate.sql000066400000000000000000000053051357523730400226140ustar00rootroot00000000000000-- message Create Document Relations Table CREATE TABLE DocTypeRelations ( typeId INT NOT NULL, followerId INT NOT NULL, sequence INT NOT NULL, PRIMARY KEY( typeId, followerId ) ); -- Acceptance of Order follows Offer -- SELECT @item := docTypeID FROM DocTypes WHERE name="Offer"; -- SELECT @follower := docTypeID FROM DocTypes WHERE name="Acceptance of Order"; INSERT INTO DocTypeRelations VALUES( (SELECT docTypeID FROM DocTypes WHERE name="Offer"), (SELECT docTypeID FROM DocTypes WHERE name="Acceptance of Order"), 1 ); -- Invoice follorws Offer -- SELECT @item := docTypeID FROM DocTypes WHERE name="Offer"; -- SELECT @follower := docTypeID FROM DocTypes WHERE name="Invoice"; -- INSERT INTO DocTypeRelations VALUES( @item, @follower, 2 ); INSERT INTO DocTypeRelations VALUES( (SELECT docTypeID FROM DocTypes WHERE name="Offer"), (SELECT docTypeID FROM DocTypes WHERE name="Invoice"), 2 ); -- Invoice follows Acceptance of Order -- SELECT @item := docTypeID FROM DocTypes WHERE name="Acceptance of Order"; -- SELECT @follower := docTypeID FROM DocTypes WHERE name="Invoice"; -- INSERT INTO DocTypeRelations VALUES( @item, @follower, 3 ); INSERT INTO DocTypeRelations VALUES( (SELECT docTypeID FROM DocTypes WHERE name="Acceptance of Order"), (SELECT docTypeID FROM DocTypes WHERE name="Invoice"), 3 ); -- Acceptance of Order follows Offer -- SELECT @item := docTypeID FROM DocTypes WHERE name="Angebot"; -- SELECT @follower := docTypeID FROM DocTypes WHERE name="Auftragsbestätigung"; -- INSERT INTO DocTypeRelations VALUES( @item, @follower, 4 ); INSERT INTO DocTypeRelations VALUES( (SELECT docTypeID FROM DocTypes WHERE name="Angebot"), (SELECT docTypeID FROM DocTypes WHERE name="Auftragsbestätigung"), 4 ); -- Invoice follorws Offer -- SELECT @item := docTypeID FROM DocTypes WHERE name="Angebot"; -- SELECT @follower := docTypeID FROM DocTypes WHERE name="Rechnung"; -- INSERT INTO DocTypeRelations VALUES( @item, @follower, 5 ); INSERT INTO DocTypeRelations VALUES( (SELECT docTypeID FROM DocTypes WHERE name="Angebot"), (SELECT docTypeID FROM DocTypes WHERE name="Rechnung"), 5 ); -- Invoice follows Acceptance of Order -- SELECT @item := docTypeID FROM DocTypes WHERE name like "Auftragsbest%"; -- SELECT @follower := docTypeID FROM DocTypes WHERE name="Rechnung"; -- INSERT INTO DocTypeRelations VALUES( @item, @follower, 6 ); INSERT INTO DocTypeRelations VALUES( (SELECT docTypeID FROM DocTypes WHERE name="Auftragsbestätigung"), (SELECT docTypeID FROM DocTypes WHERE name="Rechnung"), 6 ); kraft-0.90/database/sqlite3/migration/9_dbmigrate.sql000066400000000000000000000012071357523730400226120ustar00rootroot00000000000000-- Columns already added in 4_dbmigrate.sql *sqlite workaround* -- message add a document type id to text table --alter table DocTexts add column docTypeId int; -- AFTER docType; -- message populate the doc type id column in docTexts update DocTexts set docTypeId=(SELECT docTypeID FROM DocTypes WHERE name=docType); -- Columns already added in create_schema.sql *sqlite workaround* -- message create a type column for the docposition --alter table docposition add column postype VARCHAR(64); -- AFTER text; -- message create type column for the archdocpos table --alter table archdocpos add column postype VARCHAR(64); -- AFTER kind; kraft-0.90/database/sqlite3/migration/CMakeLists.txt000066400000000000000000000002531357523730400224430ustar00rootroot00000000000000########### install files ############### file(GLOB mig_scripts *_dbmigrate.sql) install(FILES ${mig_scripts} DESTINATION ${DATA_INSTALL_DIR}/kraft/dbmigrate/sqlite3) kraft-0.90/database/sqlite3/migration/README000066400000000000000000000014731357523730400205700ustar00rootroot00000000000000Kraft Database Migration ======================== The Kraft database schema might change over the time. To achieve that smoothly for the users, here is a database migration system. Every version of Kraft has a hardcoded version of the required database schema version. In the Kraft database there is a system table that carries the version of the current running database schema. In case the current database version is lower than the required, Kraft looks in this migration directory if there is a script starting with the number "current version +1". If found, Kraft executes the sql commands contained in the file. After all are finished, the version in the database system table is updated. Note that the migration file my contain lines like -- message: bla bla Kraft shows the message lines in the status line. kraft-0.90/importfilter/000077500000000000000000000000001357523730400153025ustar00rootroot00000000000000kraft-0.90/importfilter/CMakeLists.txt000066400000000000000000000002321357523730400200370ustar00rootroot00000000000000########### install files ############### install(FILES woerlein_txt.ftr standard_txt.ftr DESTINATION ${DATA_INSTALL_DIR}/kraft/importfilter/positions/) kraft-0.90/importfilter/standard_txt.ftr000066400000000000000000000003321357523730400205140ustar00rootroot00000000000000AMOUNT: COL(1) UNIT: COL(2) TEXT: COL(3) UNIT_PRICE: COL(4) NAME: Standard Import DESCRIPTION: Simple Standard Importfilter for four columns:
Amount, Unit, Text, Single Price ENCODING: windows-1250 SEPARATOR: ; kraft-0.90/importfilter/woerlein_txt.ftr000066400000000000000000000005401357523730400205410ustar00rootroot00000000000000AMOUNT: COL(1) TEXT: COL(2) - COL(3)
COL(4), COL(5) cm
Rabatt: COL(7)% # TEXT: "%s - %s\n%s, %s\n%s", COL(2), COL(3), COL(4), COL(5), COL(7) UNIT: Stck. UNIT_PRICE: COL(6) NAME: Wörlein Pflanzenkatalog Export DESCRIPTION: Importfilter for CSV exported Wörlein Pflanzenkatalog documents ENCODING: windows-1250 SEPARATOR: ; TAGS: plants kraft-0.90/meta/000077500000000000000000000000001357523730400135105ustar00rootroot00000000000000kraft-0.90/meta/CMakeLists.txt000066400000000000000000000004201357523730400162440ustar00rootroot00000000000000########### install files ############### install(FILES kraft.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} RENAME de.volle_kraft_voraus.kraft.desktop) install(FILES kraft.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} RENAME de.volle_kraft_voraus.kraft.appdata.xml) kraft-0.90/meta/kraft.appdata.xml000066400000000000000000000034751357523730400167630ustar00rootroot00000000000000 de.volle_kraft_voraus.kraft.desktop GPL-2.0+ CC0-1.0 Kraft Kraft helps to handle documents in small business

Kraft is free software to help to handle documents like quotes and invoices in your small business. It is a Qt/KF5 based desktop software with a strong focus on ease of use and the just enough feature set for the use case. With Kraft, creating documents will run smooth and free time for more enjoyable things than office work.

Kraft runs on any Linux desktop. There is no cloud involved, your data around your products and customers stays under your control.

With Kraft, writing documents like quotes and invoices is very easy and fast. Repeating tasks are supported, documents can be generated semi automatically, ie. invoices from offers sent out before.

For efficient work, Kraft supports catalogs to organize materials and template texts. It focuses on high quality printouts because paper is still the main communication media in the small business world. However, it also sends documents via email.

http://volle-kraft-voraus.de/images/appmeta1.png Main window of Kraft http://volle-kraft-voraus.de/images/appmeta2.png Document edit window, header section http://volle-kraft-voraus.de/ kraft_AT_volle-kraft-voraus.de foobar
kraft-0.90/meta/kraft.desktop000066400000000000000000000010111357523730400162030ustar00rootroot00000000000000[Desktop Entry] Type=Application Exec=kraft %u Icon=kraft X-DocPath=kraft/index.html Terminal=false Name=Kraft Name[ast]=Kraft Name[bs]=Kraft Name[cs]=Kraft Name[da]=Kraft Name[de]=Kraft Name[es]=Kraft Name[et]=Kraft Name[fi]=Kraft Name[fr]=Kraft Name[ga]=Kraft Name[gl]=Kraft Name[hu]=Kraft Name[mr]=क्राफ्ट Name[nl]=Kraft Name[pl]=Kraft Name[pt]=Kraft Name[pt_BR]=Kraft Name[sk]=Kraft Name[sv]=Kraft Name[tr]=Kraft Name[ug]=Kraft Name[uk]=Kraft Name[x-test]=xxKraftxx Categories=Office;Finance;Database; kraft-0.90/po/000077500000000000000000000000001357523730400132005ustar00rootroot00000000000000kraft-0.90/po/de/000077500000000000000000000000001357523730400135705ustar00rootroot00000000000000kraft-0.90/po/de/kraft.po000066400000000000000000003151461357523730400152510ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # # Translators: # Klaas Freitag , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-11 21:21+0200\n" "PO-Revision-Date: 2018-10-31 21:56+0000\n" "Last-Translator: Klaas Freitag , 2019\n" "Language-Team: German (https://www.transifex.com/not-applicable-6/teams/93132/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: addeditchapterdialog.cpp:35 #, kde-format msgid "Add/Edit Catalog Chapter" msgstr "Katalog-Kategorien hinzufügen/bearbeiten" #: addeditchapterdialog.cpp:41 #, kde-format msgid "Create a new Catalog Chapter" msgstr "Neues Katalogkapitel erstellen" #: addeditchapterdialog.cpp:45 #, kde-format msgid "Chapter Name:" msgstr "Kapitelname:" #: addeditchapterdialog.cpp:49 #, kde-format msgid "Chapter Description:" msgstr "Kapitelbeschreibung:" #: addeditchapterdialog.cpp:76 #, kde-format msgid "Create new Catalog Chapter below chapter %1" msgstr "Neues Katalogkapitel unter Kapitel %1 erstellen" #: addeditchapterdialog.cpp:83 #, kde-format msgid "Edit name and description of chapter %1" msgstr "Name und Beschreibung von Kapitel %1 bearbeiten" #: addressselectorwidget.cpp:229 #, kde-format msgid "Name" msgstr "Name" #: addressselectorwidget.cpp:231 #, kde-format msgid "Address" msgstr "Kundenadresse" #: addressselectorwidget.cpp:294 filterheader.cpp:39 #, kde-format msgid "&Search:" msgstr "&Suchen: " #: addressselectorwidget.cpp:331 #, kde-format msgid "Edit Contact..." msgstr "Kontakt bearbeiten ..." #: addressselectorwidget.cpp:332 #, kde-format msgid "Edit the currently selected contact" msgstr "Bearbeitet den aktuell ausgewählten Kontakt" #: addressselectorwidget.cpp:335 #, kde-format msgid "New Contact..." msgstr "Neuer Kontakt ..." #: addressselectorwidget.cpp:336 #, kde-format msgid "Create a new Contact" msgstr "Neuen Kontakt erstellen" #: alldocsview.cpp:64 #, kde-format msgid "All documents" msgstr "Alle Dokumente" #: alldocsview.cpp:65 #, kde-format msgid "Documents of last week" msgstr "Dokumente der letzten Woche" #: alldocsview.cpp:66 #, kde-format msgid "Documents of last month" msgstr "Dokumente im letzten Monat" #: alldocsview.cpp:72 #, kde-format msgid "&Show: " msgstr "&Anzeigen" #: alldocsview.cpp:79 #, kde-format msgid "&Search: " msgstr "&Suchen: " #: alldocsview.cpp:134 portal.cpp:290 portal.cpp:291 rc.cpp:688 rc.cpp:1535 #: rc.cpp:2382 rc.cpp:3229 rc.cpp:4088 #, kde-format msgid "Document Actions" msgstr "Dokument-Aktionen" #: archdoc.cpp:56 #, kde-format msgid "%1 for %2 (Id %3)" msgstr "%1 bis %2 (Nummer %3)" #: defaultprovider.cpp:56 doctext.cpp:80 positionviewwidget.cpp:418 #, kde-format msgid "Unknown" msgstr "Unbekannt" #: flostempldialog.cpp:71 #, kde-format msgid "Create or Edit Template Items" msgstr "Posten der Vorlage erstellen oder bearbeiten" #: flostempldialog.cpp:213 flostempldialog.cpp:604 #, kde-format msgid "No" msgstr "Nein" #: flostempldialog.cpp:214 flostempldialog.cpp:604 #, kde-format msgid "Yes" msgstr "Ja" #: flostempldialog.cpp:251 #, kde-format msgid "Calculated Price: " msgstr "Kalkulierter Preis: " #: flostempldialog.cpp:255 #, kde-format msgid "Manual Price: " msgstr "Manueller Preis: " #: flostempldialog.cpp:260 #, kde-format msgid "(+%1%)" msgstr "(+ %1 %)" #: flostempldialog.cpp:264 #, kde-format msgid "%1%" msgstr "%1 %" #: flostempldialog.cpp:266 #, kde-format msgid ": " msgstr ": " #: flostempldialog.cpp:388 reportgenerator.cpp:212 #, kde-format msgid "Template Error" msgstr "Vorlagenfehler" #: flostempldialog.cpp:388 #, kde-format msgid "Saving of this template failed, sorry" msgstr "Das Speichern der Vorlage ist fehlgeschlagen." #: flostempldialog.cpp:416 #, kde-format msgid "The template has been modified." msgstr "Vorlage geändert" #: flostempldialog.cpp:417 #, kde-format msgid "Do you want to discard your changes?" msgstr "" "Die Vorlage ist bearbeitet worden. Möchten Sie wirklich alle Änderungen " "verwerfen?" #: flostempldialog.cpp:446 #, kde-format msgid "" "The catalog chapter was changed for this template.\n" "Do you really want to move the template to the new chapter?" msgstr "" "Die Kategorie des Katalogs für diese Vorlage ist geändert worden.\n" "Möchten Sie diese Vorlage wirklich in die neue Kategorie verschieben?" #: flostempldialog.cpp:448 #, kde-format msgid "Chapter Change" msgstr "Kapitelveränderung" #: kataloglistview.cpp:333 #, kde-format msgid "A catalog chapter can not be deleted as long it has children." msgstr "" "Ein Kapitel im Katalog kann nicht gelöscht werden, wenn es noch Unterkapitel" " gibt." #: kataloglistview.cpp:334 #, kde-format msgid "Chapter can not be deleted" msgstr "Das Kapitel kann nicht gelöscht werden" #: portal.cpp:101 #, kde-format msgid "&Quit" msgstr "&Beenden" #: portal.cpp:106 #, kde-format msgid "&Cut" msgstr "&Ausschneiden" #: portal.cpp:111 #, kde-format msgid "C&opy" msgstr "K&opieren" #: portal.cpp:116 #, kde-format msgid "&Paste" msgstr "&Einfügen" #: portal.cpp:121 #, kde-format msgid "&Settings" msgstr "&Einstellungen" #: portal.cpp:126 #, kde-format msgid "&Create Document" msgstr "Dokument &anlegen" #: portal.cpp:130 #, kde-format msgid "&Copy Document" msgstr "Dokument &kopieren" #: portal.cpp:134 #, kde-format msgid "Create &Followup Document" msgstr "&Nachfolgedokument erzeugen" #: portal.cpp:139 #, kde-format msgid "Print Document" msgstr "Dokument drucken" #: portal.cpp:144 #, kde-format msgid "Show Document" msgstr "Dokument anzeigen" #: portal.cpp:149 #, kde-format msgid "Edit Document" msgstr "Dokument bearbeiten" #: portal.cpp:154 #, kde-format msgid "Open Archived Document" msgstr "Archiviertes Dokument öffnen" #: portal.cpp:159 #, kde-format msgid "Mail Document" msgstr "Dokument mailen" #: portal.cpp:164 tagtemplatesdialog.cpp:135 tagtemplatesdialog.cpp:140 #, kde-format msgid "Edit Tag Templates" msgstr "Stichwort-Vorlagen bearbeiten" #: portal.cpp:169 #, kde-format msgid "Redo Initial Setup..." msgstr "Wiederhole initiales Setup..." #: portal.cpp:174 #, kde-format msgid "Kraft Handbook..." msgstr "Kraft Handbuch..." #: portal.cpp:178 #, kde-format msgid "About Qt..." msgstr "Über Qt..." #: portal.cpp:182 #, kde-format msgid "About Kraft..." msgstr "Über Kraft...." #: portal.cpp:186 #, kde-format msgid "Quits the application" msgstr "Anwendung beenden" #: portal.cpp:188 #, kde-format msgid "Cuts the selected section and puts it to the clipboard" msgstr "" "Schneidet den ausgewählten Abschnitt aus und kopiert ihn in die " "Zwischenablage." #: portal.cpp:189 #, kde-format msgid "Copies the selected section to the clipboard" msgstr "Kopiert den ausgewählten Abschnitt in die Zwischenablage." #: portal.cpp:190 #, kde-format msgid "Pastes the clipboard contents to current position" msgstr "Fügt den Inhalt der Zwischenablage an der aktuellen Position ein." #: portal.cpp:192 #, kde-format msgid "Creates a new Document" msgstr "Erstellt ein neues Dokument." #: portal.cpp:193 #, kde-format msgid "Print and archive this Document" msgstr "Das Dokument drucken und archivieren" #: portal.cpp:194 #, kde-format msgid "Creates a new document which is a copy of the selected document" msgstr "Erstellt ein neues Dokument, das eine Kopie des ausgewählten ist." #: portal.cpp:195 #, kde-format msgid "Create a followup document for the current document" msgstr "Ein Folgedokument für das aktuell ausgewählte erstellen" #: portal.cpp:196 #, kde-format msgid "Opens the document for editing" msgstr "Öffnet das Dokument zum Bearbeiten." #: portal.cpp:197 #, kde-format msgid "Opens a read only view on the document." msgstr "Öffnet das Dokument schreibgeschützt." #: portal.cpp:198 #, kde-format msgid "Send document per mail" msgstr "Das Dokument per E-Mail versenden" #: portal.cpp:199 #, kde-format msgid "" "Edit the available tag templates which can be assigned to document items." msgstr "" "Markierungs-Vorlagen hinzufügen, ändern oder entfernen, die den Posten der " "Dokumente zugeordnet werden können." #: portal.cpp:200 #, kde-format msgid "Configure the Database Kraft is working on." msgstr "Die Datenbank einrichten, mit der Kraft arbeitet." #: portal.cpp:201 #, kde-format msgid "Open a viewer on an archived document" msgstr "Das archivierte Dokument zur Ansicht öffnen" #: portal.cpp:214 rc.cpp:484 rc.cpp:1331 rc.cpp:2178 rc.cpp:3025 rc.cpp:4007 #, kde-format msgid "&File" msgstr "&Datei" #: portal.cpp:218 #, kde-format msgid "&Edit" msgstr "&Bearbeiten" #: portal.cpp:223 rc.cpp:682 rc.cpp:1529 rc.cpp:2376 rc.cpp:3223 rc.cpp:4082 #, kde-format msgid "&Document" msgstr "&Dokument" #: portal.cpp:235 #, kde-format msgid "Kraft" msgstr "Kraft" #: portal.cpp:237 #, kde-format msgid "&Preferences" msgstr "&Einstellungen" #: portal.cpp:241 #, kde-format msgid "Toolbars" msgstr "Werkzeugleisten" #: portal.cpp:246 #, kde-format msgid "&Help" msgstr "&Hilfe" #: portal.cpp:275 portal.cpp:442 portal.cpp:509 portal.cpp:610 portal.cpp:651 #: portal.cpp:678 portal.cpp:830 portal.cpp:1000 portal.cpp:1007 #: portal.cpp:1014 katalogview.cpp:224 katalogview.cpp:299 katalogview.cpp:313 #: katalogview.cpp:322 katalogview.cpp:331 #, kde-format msgid "Ready." msgstr "Fertig." #: portal.cpp:343 #, kde-format msgid "" "Kraft can not connect to the specified MySQL server. Please check the Kraft " "database settings, check if the server is running and verify if a database " "with the name %1 exits!" msgstr "" "Kraft kann keine Verbindung zum angegebenen MySQL-Server herstellen. Bitte " "überprüfen Sie die Datenbank-Einstellungen von Kraft, ob der Datenbank-" "Server läuft und ob eine Datenbank namens %1 vorhanden ist." #: portal.cpp:347 #, kde-format msgid "" "The database with the name %1 does not exist on the database server. Please " "make sure the database exists and is accessible by the user running Kraft." msgstr "" "Die Datenbank namens %1 ist auf dem Datenbank-Server nicht verfügbar. Bitte " "stellen Sie sicher, dass die Datenbank vorhanden ist und vom Benutzer, unter" " welchem Kraft läuft, darauf zugegriffen werden kann." #: portal.cpp:351 #, kde-format msgid "" "The Qt database driver could not be loaded. That probably means, that they " "are not installed. Please make sure the Qt database packages are installed " "and try again." msgstr "" "Der Qt-Datenbank-Treiber lässt sich nicht laden. Das bedeutet eventuell, " "dass er nicht installiert ist. Bitte stellen Sie sicher, dass die Qt-" "Datenbank-Pakete installiert sind und versuchen es dann erneut." #: portal.cpp:355 #, kde-format msgid "There is a database problem: %1" msgstr "Es ist ein Problem mit der Datenbank aufgetreten: %1" #: portal.cpp:370 #, kde-format msgid "Database Problem." msgstr "Datenbank-Problem" #: portal.cpp:377 #, kde-format msgid "Check commandline actions" msgstr "Befehlszeilenaktionen prüfen" #: portal.cpp:467 #, kde-format msgid "Welcome to Kraft, %1" msgstr "Willkommen zu Kraft, %1" #: portal.cpp:496 #, kde-format msgid "Creating new document..." msgstr "Neues Dokument erstellen ..." #: portal.cpp:522 #, kde-format msgctxt "" "Dialog title of the followup doc dialog, followed by the id of the source " "doc" msgid "Create follow up document for %1" msgstr "Folgedokument für %1 anlegen" #: portal.cpp:567 #, kde-format msgctxt "Title of the new doc dialog, %1 is the source doc id" msgid "Create new Document as Copy of %1" msgstr "Neues Dokument als Kopie von %1 erzeugen" #: portal.cpp:602 #, kde-format msgid "Opening document to view..." msgstr "Dokument zur Ansicht öffnen ..." #: portal.cpp:637 portal.cpp:660 #, kde-format msgid "Generating PDF..." msgstr "PDF wird erstellt ..." #: portal.cpp:776 #, kde-format msgid "Printing archived document..." msgstr "Archiviertes Dokument drucken ..." #: portal.cpp:822 #, kde-format msgid "Opening document %1" msgstr "Dokument %1 öffnen" #: portal.cpp:971 katalogview.cpp:239 #, kde-format msgid "Exiting..." msgstr "Beenden ..." #: portal.cpp:998 #, kde-format msgid "Cutting selection..." msgstr "Auswahl ausschneiden ..." #: portal.cpp:1005 #, kde-format msgid "Copying selection to clipboard..." msgstr "Auswahl in die Zwischenablage kopieren ..." #: portal.cpp:1012 #, kde-format msgid "Inserting clipboard contents..." msgstr "Inhalt der Zwischenablage einfügen ..." #: setupassistant.cpp:36 #, kde-format msgid "Welcome to the Kraft Setup Assistant" msgstr "Willkommen beim Einrichtungsassistenten von Kraft" #: setupassistant.cpp:55 #, kde-format msgid "Select the Database Backend" msgstr "Bitte wählen Sie das Datenbank-Modul" #: setupassistant.cpp:92 #, kde-format msgid "Sqlite File Name" msgstr "Dateiname der Sqlite-Datenbank" #: setupassistant.cpp:145 #, kde-format msgid "MySql Detail Information" msgstr "MySQL Datenbank-Informationen" #: setupassistant.cpp:187 #, kde-format msgid "Create Database" msgstr "Datenbank neu erzeugen" #: setupassistant.cpp:209 setupassistant.cpp:222 #, kde-format msgid "0/%1" msgstr "0 / %1" #: setupassistant.cpp:241 setupassistant.cpp:251 setupassistant.cpp:289 #, kde-format msgid "%1/%2" msgstr "%1 / %2" #: setupassistant.cpp:264 #, kde-format msgid "Upgrade the Database" msgstr "Datenbankschema aktualisieren" #: setupassistant.cpp:312 #, kde-format msgid "Your Company Address" msgstr "Adresse der Firma" #: setupassistant.cpp:317 #, kde-format msgid "" "Select your companies address either from the address book or enter it " "manually. It is set as a consigner on the documents." msgstr "" "Wählen Sie die Adresse Ihrer Firma aus dem Adressbuch oder tragen Sie sie " "manuell ein. Sie wird als Absender der Dokumente verwendet." #: setupassistant.cpp:324 #, kde-format msgid "Select from Addressbook" msgstr "Aus dem Adressbuch" #: setupassistant.cpp:339 prefsdialog.cpp:202 #, kde-format msgid "Manual Entry" msgstr "Manueller Eintrag" #: setupassistant.cpp:415 #, kde-format msgid "Final Status" msgstr "Endergebnis" #: setupassistant.cpp:509 #, kde-format msgid "" "

Can't connect to your database. Are you sure your credentials are correct" " and the database exists?

" msgstr "" "

Die Verbindung zur Datenbank kann nicht hergestellt werden. Bitte stellen" " Sie sicher, dass die Einstellungen richtig sind und die Datenbank vorhanden" " ist.

" #: setupassistant.cpp:520 #, kde-format msgid "

Can't open your database file, check the permissions and such." msgstr "" "

Die Datenbank-Datei kann nicht geöffnet werden. Bitte überprüfen Sie die " "Berechtigungen.

" #: setupassistant.cpp:529 #, kde-format msgid "" "

The database is already existing, no action needs to be taken " "here.

Please hit next to proceed.

" msgstr "" "

Die Datenbank ist bereits angelegt, sodass hier keine weiteren Aktionen " "durchzuführen sind.

Bitte drücken Sie auf Weiter, um " "fortzufahren.

" #: setupassistant.cpp:578 #, kde-format msgid "

The database setup was successfully completed.

" msgstr "

Die Datenbankeinrichtung ist erfolgreich abgeschlossen.

" #: setupassistant.cpp:579 #, kde-format msgid "

You can start to work with Kraft now. Please do not forget to

" msgstr "" "

Sie können nun Ihre Arbeit mit Kraft beginnen. Bitte vergessen Sie " "nicht:

" #: setupassistant.cpp:581 #, kde-format msgid "
  • adjust various settings in the Kraft Preferences dialog.
  • " msgstr "" "
  • Verschiedene Einstellungen im Einstellungen-Fenster von Kraft " "anzupassen.
  • " #: setupassistant.cpp:582 #, kde-format msgid "
  • Check the Catalog chapter list.
  • " msgstr "
  • Überprüfen Sie die Kapitelliste des Katalogs.
  • " #: setupassistant.cpp:583 #, kde-format msgid "
  • Make your business and have fun.
  • " msgstr "
  • Führen Sie Ihre Geschäfte und haben Sie Spaß.
  • " #: setupassistant.cpp:585 #, kde-format msgid "" "

    If you press Finish now, the new database configuration is stored " "in Krafts configuration.

    " msgstr "" "

    Falls Sie nun auf Fertigstellen klicken, wird die neue Datenbank-" "Einrichtung in der Kraft-Konfiguration gespeichert.

    " #: setupassistant.cpp:601 #, kde-format msgid "" "The Database can not be connected. Please check the database credentials." msgstr "" "Die Verbindung zur Datenbank kann nicht hergestellt werden. Bitte stellen " "Sie sicher, dass die Einstellungen richtig sind." #: setupassistant.cpp:607 #, kde-format msgid "The database core tables do not exist. Please check initial setup." msgstr "" "Die grundlegenden Tabellen der Datenbank sind nicht vorhanden. Bitte " "überprüfen Sie die einleitende Einrichtung." #: setupassistant.cpp:614 #, kde-format msgid "Database is up to date. No upgrade is required." msgstr "" "Die Datenbank ist auf dem aktuellen Stand, sodass keine Aktualisierung " "notwendig ist." #: setupassistant.cpp:619 #, kde-format msgid "Parse Update Commands..." msgstr "Update-Anweisungen analysieren ..." #: setupassistant.cpp:662 #, kde-format msgid "The Upgrade failed!" msgstr "Die Aktualisierung ist fehlgeschlagen." #: setupassistant.cpp:664 #, kde-format msgid "The Upgrade succeeded, the current schema version is %1!" msgstr "" "Die Aktualisierung war erfolgreich. Die aktuelle Version des Schemas ist %1." #: setupassistant.cpp:677 #, kde-format msgid "" "The Database can not be connected. Please check the database credentials!" msgstr "" "Die Verbindung zur Datenbank kann nicht hergestellt werden. Bitte stellen " "Sie sicher, dass die Einstellungen richtig sind." #: setupassistant.cpp:683 #, kde-format msgid "Parse Create Commands..." msgstr "Create-Anweisungen analysieren ..." #: setupassistant.cpp:691 #, kde-format msgid "Parse database fillup commands..." msgstr "Datenbank-Füllbefehle analysieren ..." #: setupassistant.cpp:704 #, kde-format msgid "Processing database creation commands..." msgstr "Datenbank-Erzeugungsbefehle bearbeiten ..." #: setupassistant.cpp:721 #, kde-format msgid "Process database fillup commands..." msgstr "Datenbank-Füllbefehle bearbeiten ..." #: setupassistant.cpp:731 #, kde-format msgid "Successfully finished commands." msgstr "Die Befehle wurden erfolgreich ausgeführt." #: setupassistant.cpp:733 #, kde-format msgid "Failed to perform all commands." msgstr "Es kann kein Befehl erfolgreich ausgeführt werden." #: setupassistant.cpp:777 #, kde-format msgid "" "This assistant guides you through the basic settings of your Kraft " "installation." msgstr "" "Dieser Assistent führt Sie durch die Grundeinstellungen Ihrer Kraft-" "Installation" #: setupassistant.cpp:787 #, kde-format msgid "There was no database configuration found." msgstr "Es kann keine Datenbank-Einrichtung gefunden werden." #: setupassistant.cpp:789 #, kde-format msgid "A valid current database configuration file was found." msgstr "Eine gültige aktuelle Datenbank-Einrichtung ist gefunden worden." #: setupassistant.cpp:811 #, kde-format msgid "The database schema version is too low. It will be updated." msgstr "" "Die Version des Datenbank-Schemas ist zu niedrig. Es wird aktualisiert." #: setupassistant.cpp:814 #, kde-format msgid "The current database schema version is too high. Leaving untouched! " msgstr "" "Die Version des Datenbankschema ist zu hoch. Es wird nichts verändert." #: setupassistant.cpp:821 #, kde-format msgid "" "

    The database can be opened, but does not contain valid content.

    A " "new database can be created automatically from scratch.

    " msgstr "" "

    Die Datenbank kann geöffnet werden, enthält aber keine gültigen " "Inhalte.

    Eine neue Datenbank kann automatisch von Grund auf erzeugt " "werden.

    " #: setupassistant.cpp:828 #, kde-format msgid "

    Kraft failed to connect to the configured database.

    " msgstr "

    Kraft konnte nicht mit der konfigurierten Datenbank verbinden

    " #: setupassistant.cpp:830 #, kde-format msgid "" "

    Please check the database server setup and restart Kraft to connect." msgstr "" "

    Bitte überprüfen Sie die Einstellungen des Datenbank-Servers und starten " "Sie Kraft neu, um eine Verbindung herzustellen." #: setupassistant.cpp:832 #, kde-format msgid "

    Please check the database file." msgstr "

    Bitte überprüfen Sie die Datenbank-Datei." #: setupassistant.cpp:834 #, kde-format msgid "or create a new database by hitting next.

    " msgstr "" "Oder erstellen Sie eine neue Datenbank, indem Sie Weiter drücken.

    " #: setupassistant.cpp:842 #, kde-format msgid "

    Please hit next and follow the instructions.

    " msgstr "

    Drücken Sie Weiter und folgen Sie den Angaben.

    " #: documentman.cpp:90 #, kde-format msgid "Substract sum from %1 %2" msgstr "Subtrahiere Summe von %1 %2" #: calcpart.cpp:98 #, kde-format msgid "Base" msgstr "Basis" #: templkataloglistview.cpp:46 rc.cpp:6 rc.cpp:853 rc.cpp:1700 rc.cpp:2547 #: rc.cpp:3394 texteditdialog.cpp:76 #, kde-format msgid "Template" msgstr "Vorlage" #: templkataloglistview.cpp:47 prefswages.cpp:53 rc.cpp:126 rc.cpp:973 #: rc.cpp:1820 rc.cpp:2667 rc.cpp:3514 #, kde-format msgid "Price" msgstr "Preis" #: templkataloglistview.cpp:48 #, kde-format msgid "Calc. Type" msgstr "Kalkulationsart" #: templkataloglistview.cpp:55 #, kde-format msgid "Template Catalog" msgstr "Vorlagenkatalog" #: catalogselection.cpp:50 #, kde-format msgid "Selected &Catalog: " msgstr "&Katalogauswahl: " #: catalogselection.cpp:142 catalogselection.cpp:157 #, kde-format msgid "Append to Document" msgstr "An Dokument anfügen" #: docassistant.cpp:52 #, kde-format msgid "Show &Templates" msgstr "Vorlagen anzeigen" #: docassistant.cpp:57 #, kde-format msgid "Show mask to create or select templates to be used in the document" msgstr "" "Den Dialog zum Erstellen oder Auswählen von Dokumentvorlagen anzeigen." #: docassistant.cpp:121 #, kde-format msgid "Add a template to the document" msgstr "Vorlage zum Dokument hinzufügen" #: docassistant.cpp:127 #, kde-format msgid "Create a new template" msgstr "Eine neue Vorlage erstellen" #: docassistant.cpp:134 #, kde-format msgid "Edit the current template" msgstr "Aktuelle Vorlage bearbeiten" #: docassistant.cpp:141 #, kde-format msgid "Delete the current template" msgstr "Aktuelle Vorlage löschen" #: docassistant.cpp:292 #, kde-format msgid "" "Do you really want to delete the template permanently?\n" "It can not be recovered." msgstr "" "Möchten Sie die ausgewählte Vorlage wirklich löschen? Dieser Vorgang kann " "nicht rückgängig gemacht werden." #: docpostcard.cpp:34 #, kde-format msgid "Document Overview" msgstr "Dokumenten-Übersicht" #: docpostcard.cpp:121 #, kde-format msgid "Netto:" msgstr "Netto:" #: docpostcard.cpp:132 docpostcard.cpp:139 #, kde-format msgid "+ %1% Tax:" msgstr "+ %1 % Steuer:" #: docpostcard.cpp:145 #, kde-format msgid "Sum Tax:" msgstr "Steuersumme:" #: docpostcard.cpp:150 #, kde-format msgid "Total:" msgstr "Gesamt:" #: docpostcard.cpp:242 #, kde-format msgid "%1 Items" msgstr "%1 Posten" #: docpostcard.cpp:244 #, kde-format msgid "%1 Items, netto %2" msgstr "%1 Posten, Netto %2" #: doctext.cpp:61 #, kde-format msgid "Standard" msgstr "Standard" #: doctext.cpp:76 #, kde-format msgid "Header Text" msgstr "Kopftext" #: doctext.cpp:77 #, kde-format msgid "Footer Text" msgstr "Fußtext" #: doctext.cpp:78 #, kde-format msgid "Items" msgstr "Posten" #: doctypeedit.cpp:48 #, kde-format msgid "" msgstr "" #: doctypeedit.cpp:49 #, kde-format msgid "
    " msgstr "" #: doctypeedit.cpp:132 doctypeedit.cpp:158 #, kde-format msgid "Add Document Type" msgstr "Dokumentenart hinzufügen" #: doctypeedit.cpp:133 #, kde-format msgid "Enter the name of a new document type" msgstr "Bitte geben Sie den Namen der neuen Dokumentenart ein." #: doctypeedit.cpp:159 #, kde-format msgid "Edit the name of a document type" msgstr "Den Namen einer Dokumentenart ändern." #: kraftdoc.cpp:164 #, kde-format msgctxt "First argument is the doctype, like Invoice, followed by the ID" msgid "%1 (Id %2)" msgstr "%1 (Id %2)" #: kraftdoc.cpp:317 #, kde-format msgctxt "Document part header" msgid "Header" msgstr "Kopfbereich" #: kraftdoc.cpp:319 #, kde-format msgctxt "Document part footer" msgid "Footer" msgstr "Fußbereich" #: kraftdoc.cpp:321 #, kde-format msgctxt "Document part containing the items" msgid "Items" msgstr "Posten" #: kraftdoc.cpp:323 #, kde-format msgid "Unknown document part" msgstr "Unbekannter Dokumententeil" #: fixcalcdialog.cpp:36 #, kde-format msgid "Calculation Fix Item" msgstr "Zeitkostenanteil" #: catalogtemplate.cpp:52 #, kde-format msgid "Manual Price" msgstr "Manueller Preis" #: catalogtemplate.cpp:54 #, kde-format msgid "Calculated" msgstr "Kalkuliert" #: catalogtemplate.cpp:56 #, kde-format msgid "AutoCalc" msgstr "Automatische Kalkulation" #: catalogtemplate.cpp:57 #, kde-format msgid "Err: Unknown type %d" msgstr "Fehler: Unbekannter Typ %d" #: flostempldialog.h:104 #, kde-format msgid "Calculated material" msgstr "Kalkuliertes Material" #: importfilter.cpp:50 #, kde-format msgid "Unable to find filter called %1" msgstr "Der Filter mit dem Namen „%1“ kann nicht gefunden werden." #: importfilter.cpp:58 #, kde-format msgid "Could not open the definition file!" msgstr "Definitionsdatei kann nicht geöffnet werden!" #: importfilter.cpp:143 #, kde-format msgid "Unknown tags: " msgstr "Unbekannte Markierungen:" #: importfilter.cpp:184 #, kde-format msgid "Could not recode input file!" msgstr "Umcodieren der Eingabedatei fehlgeschlagen!" #: importfilter.cpp:192 #, kde-format msgid "Unable to open temp file " msgstr "Die temporäre Datei kann nicht geöffnet werden " #: importfilter.cpp:198 #, kde-format msgid "Could not open the import source file!" msgstr "Die zu importierende Datei kann nicht geöffnet werden." #: importitemdialog.cpp:47 #, kde-format msgid "Import Items From File" msgstr "Posten aus Datei importieren" #: importitemdialog.cpp:116 #, kde-format msgid "the Header of the Document" msgstr "Der Kopfbereich des Dokuments." #: importitemdialog.cpp:125 templtopositiondialogbase.cpp:58 #, kde-format msgid "..." msgstr "..." #: inserttempldialog.cpp:105 #, kde-format msgid "Create a new Item" msgstr "Neuen Posten anlegen" #: inserttempldialog.cpp:107 #, kde-format msgid "Create a new Item from Template" msgstr "Posten aus Vorlage erstellen" #: itemtagdialog.cpp:82 #, kde-format msgid "Edit Item Tags" msgstr "Posten-Markierungen bearbeiten" #: itemtagdialog.cpp:89 #, kde-format msgid "Item Tags" msgstr "Posten-Markierungen" #: itemtagdialog.cpp:90 #, kde-format msgid "Select all tags for the item should be tagged with." msgstr "Wählen Sie alle Markierungen für den Posten aus." #: itemtagdialog.cpp:105 tagtemplatesdialog.cpp:150 #, kde-format msgid "Tag" msgstr "Markierung" #: itemtagdialog.cpp:106 tagtemplatesdialog.cpp:151 #, kde-format msgid "Color" msgstr "Farbe" #: itemtagdialog.cpp:107 tagtemplatesdialog.cpp:152 #, kde-format msgid "Description" msgstr "Beschreibung" #: katalog.cpp:137 #, kde-format msgid "not found" msgstr "nicht gefunden" #: newdocassistant.cpp:55 #, kde-format msgid "" "Please select a customer as addressee for the document. If there is no entry" " for the customer in the addressbook yet, it can be opened by clicking on " "the button below." msgstr "" "Bitte wählen Sie einen Kunden als Adressaten für das Dokument aus. Wenn es " "noch keinen Eintrag für den Kunden im Adressbuch gibt, kann es hier geöffnet" " und ein neuer Kunde angelegt werden." #: newdocassistant.cpp:97 #, kde-format msgid "" "Select a document type and a date. A comment on the whiteboard helps to " "classify the document." msgstr "" "Wählen Sie einen Dokumenttyp und das Datum aus. Eine Notiz hilft, das " "Dokument besser zu klassifizieren." #: newdocassistant.cpp:104 #, kde-format msgid "Customer: Not yet selected!" msgstr "Kunde: Es ist noch kein Kunde ausgewählt." #: newdocassistant.cpp:113 #, kde-format msgid "Document &Type:" msgstr "&Dokumenttyp:" #: newdocassistant.cpp:117 #, kde-format msgid "Document Date: " msgstr "Dokumentdatum:" #: newdocassistant.cpp:120 #, kde-format msgid "Whiteboard Content:" msgstr "Notizen:" #: newdocassistant.cpp:124 #, kde-format msgid "Copy document items from predecessor document" msgstr "Kopiere Posten vom Vorgängerdokument" #: newdocassistant.cpp:167 #, kde-format msgid "Create a new Kraft Document" msgstr "Erzeuge ein neues Kraft-Dokument" #: newdocassistant.cpp:173 #, kde-format msgid "New Document Settings" msgstr "Einstellungen für neues Dokument" #: newdocassistant.cpp:179 #, kde-format msgid "Select an Addressee" msgstr "Wähle einen Adressaten" #: newdocassistant.cpp:258 #, kde-format msgid "Followup Document for %1" msgstr "Folgedokument für %1" #: kraftview_ro.cpp:74 kraftview.cpp:86 #, kde-format msgid "Document" msgstr "Dokument" #: kraftview_ro.cpp:210 kraftview_ro.cpp:247 reportgenerator.cpp:368 rc.cpp:21 #: rc.cpp:868 rc.cpp:1715 rc.cpp:2562 rc.cpp:3409 #, kde-format msgid "VAT" msgstr "Umsatzsteuer" #: kraftview_ro.cpp:211 #, kde-format msgid "Reduced TAX" msgstr "Reduzierte Steuer" #: kraftview_ro.cpp:238 reportgenerator.cpp:360 #, kde-format msgid "reduced VAT" msgstr "Reduzierte Umsatzsteuer" #: templkatalogview.cpp:100 #, kde-format msgid "" msgstr "" #: templkatalogview.cpp:138 materialkatalogview.cpp:135 #, kde-format msgid "Do you really want to delete the template from the catalog?" msgstr "Möchten Sie die ausgewählte Vorlage wirklich aus dem Katalog löschen?" #: kraftdocfooteredit.cpp:52 #, kde-format msgid "Document Footer" msgstr "Dokumentfuß" #: kraftdocheaderedit.cpp:56 #, kde-format msgid "Document Header" msgstr "Dokumentkopf" #: kraftdocheaderedit.cpp:64 #, kde-format msgid "Manually set in address field." msgstr "Manuell im Adressfeld gesetzt." #: kraftdocpositionsedit.cpp:94 #, kde-format msgid "Add Item..." msgstr "Posten hinzufügen ..." #: kraftdocpositionsedit.cpp:96 #, kde-format msgid "Add a normal item to the document manually." msgstr "Zum manuellen Hinzufügen eines Postens." #: kraftdocpositionsedit.cpp:100 #, kde-format msgid "Add Discount Item" msgstr "Rabattposten hinzufügen" #: kraftdocpositionsedit.cpp:103 #, kde-format msgid "" "Adds an item to the document that allows discounts on other items in the " "document" msgstr "" "Fügt einen Posten zum Dokument hinzu, mit dem Rabatte für andere Posten " "innerhalb des Dokuments gewährt werden können." #: kraftdocpositionsedit.cpp:106 #, kde-format msgid "Import Items..." msgstr "Posten importieren ..." #: kraftdocpositionsedit.cpp:109 #, kde-format msgid "Opens a dialog where multiple items can be imported from a text file." msgstr "" "Öffnet einen Dialog zum Importieren mehrerer Posten aus einer Textdatei." #: kraftdocpositionsedit.cpp:118 #, kde-format msgid "Document Items" msgstr "Dokumentposten" #: portalview.cpp:65 #, kde-format msgid "About Kraft" msgstr "Über Kraft" #: portalview.cpp:83 #, kde-format msgid "Documents" msgstr "Dokumente" #: portalview.cpp:89 #, kde-format msgid "Timeline" msgstr "Zeitverlauf" #: portalview.cpp:96 #, kde-format msgid "Catalogs" msgstr "Kataloge" #: portalview.cpp:134 #, kde-format msgid "Kraft Document Overview" msgstr "Kraft-Dokument-Übersicht" #: portalview.cpp:141 portalview.cpp:160 #, kde-format msgid "Available Catalogs" msgstr "Verfügbare Kataloge" #: portalview.cpp:143 #, kde-format msgid "No catalogs available." msgstr "Keine Kataloge installiert" #: portalview.cpp:193 #, kde-format msgid "Open" msgstr "Öffnen" #: portalview.cpp:204 #, kde-format msgid "No templates yet." msgstr "Noch keine Vorlage angelegt." #: portalview.cpp:209 #, kde-format msgid "%1 templates in %2 chapters
    last modified at %3" msgstr "%1 Vorlagen in %2 Kapiteln
    Zuletzt angepasst am %3" #: portalview.cpp:216 #, kde-format msgid "XML Export" msgstr "XML-Export" #: portalview.cpp:221 prefsdialog.cpp:138 prefsunits.cpp:88 prefswages.cpp:99 #: rc.cpp:319 rc.cpp:1166 rc.cpp:2013 rc.cpp:2860 rc.cpp:3707 #, kde-format msgid "Remove" msgstr "Entfernen" #: portalview.cpp:270 #, kde-format msgid "Kraft Website" msgstr "Kraft Webseite" #: portalview.cpp:273 #, kde-format msgctxt "The string is followed by a link to the GPL2 text" msgid "Kraft is free software licensed under the" msgstr "Kraft ist freie Software lizensiert unter" #: portalview.cpp:274 #, kde-format msgctxt "The string is followed by the link to github" msgid "Kraft is maintained on " msgstr "Kraft wird entwickelt auf " #: portalview.cpp:275 #, kde-format msgid "Authors" msgstr "Autoren" #: portalview.cpp:276 #, kde-format msgid "Developer and Maintainer" msgstr "Entwickler und Maintainer" #: portalview.cpp:277 #, kde-format msgid "Developer" msgstr "Entwickler" #: portalview.cpp:278 #, kde-format msgctxt "The person who provided the logo graphics" msgid "Logo design" msgstr "Logo Entwurf" #: portalview.cpp:281 #, kde-format msgid "" "Kraft helps you to handle documents like quotes and invoices in your small " "business." msgstr "" "Kraft ist freie Software zur schnellen, flexiblen und professionellen " "Angebots- und Rechnungsbearbeitung." #: portalview.cpp:282 #, kde-format msgid "Welcome to Kraft" msgstr "Willkommen zu Kraft" #: portalview.cpp:283 #, kde-format msgid "Kraft Version" msgstr "Kraft-Version" #: portalview.cpp:285 #, kde-format msgid "Codename" msgstr "Codename" #: portalview.cpp:288 #, kde-format msgid "Country Setting" msgstr "Ländereinstellung" #: portalview.cpp:291 #, kde-format msgid "Language Setting" msgstr "Spracheinstellung" #: portalview.cpp:295 #, kde-format msgid "Kraft Initialisation Problem" msgstr "Kraft Initialisierungsproblem" #: portalview.cpp:296 #, kde-format msgid "" "There is a initialisation error on your system. Kraft will not work that " "way." msgstr "" "Bei der Initialisierung ist ein Fehler aufgetreten. Kraft wird so nicht " "funktionieren." #: portalview.cpp:304 #, kde-format msgid "Database Information" msgstr "Datenbank-Informationen" #: portalview.cpp:305 #, kde-format msgid "Kraft database name" msgstr "Kraft-Datenbankname" #: portalview.cpp:310 #, kde-format msgid "Required Version" msgstr "Nötige Version" #: portalview.cpp:313 #, kde-format msgid "Database schema version" msgstr "Datenbankschema-Version" #: portalview.cpp:315 #, kde-format msgid "Qt database driver" msgstr "Qt-Datenbank-Treiber" #: portalview.cpp:319 #, kde-format msgid "established" msgstr "Verbunden" #: portalview.cpp:319 #, kde-format msgid "NOT AVAILABLE!" msgstr "NICHT VERFÜGBAR" #: portalview.cpp:320 #, kde-format msgid "Database connection" msgstr "Datenbankverbindung" #: portalview.cpp:329 #, kde-format msgid "Database Version" msgstr "Datenbankversion" #: portalview.cpp:337 #, kde-format msgid "Addressbook Backend" msgstr "Adressbuch-Backend" #: portalview.cpp:338 #, kde-format msgid "Backend type" msgstr "Backendtyp %1" #: portalview.cpp:340 #, kde-format msgid "running" msgstr "läuft" #: portalview.cpp:340 #, kde-format msgid "not running" msgstr "nicht funktionsfähig" #: portalview.cpp:344 #, kde-format msgid "External Tools" msgstr "Externe Werkzeuge" #: portalview.cpp:345 #, kde-format msgid "RML to PDF conversion tool" msgstr "Umwandlungsprogramm (RML zu PDF):" #: portalview.cpp:348 #, kde-format msgid "not found!" msgstr "nicht gefunden." #: portalview.cpp:351 #, kde-format msgid "iconv tool for text import" msgstr "„iconv“-Werkzeug zum Textimport" #: portalview.cpp:355 #, kde-format msgid "Some Icons are made by" msgstr "Einige Icons sind erstellt von" #: portalview.cpp:356 #, kde-format msgid "Acknowledgements" msgstr "Danksagung" #: reportgenerator.cpp:133 #, kde-format msgid "A document template named %1 could not be loaded. " msgstr "Eine Dokumentvorlage namens %1 kann nicht geladen werden. " #: reportgenerator.cpp:134 #, kde-format msgid "Please check your installation!" msgstr "Bitte Installation überprüfen!" #: reportgenerator.cpp:210 #, kde-format msgid "" "The template file could not be opened: %1\n" " " msgstr "" "Vorlagendatei kann nicht geöffnet werden: %1\n" " " #: reportgenerator.cpp:211 #, kde-format msgid "Please check the setup and the doc type configuration." msgstr "" "Bitte überprüfen Sie die Einrichtung und die Konfiguration der " "Dokumentenarten." #: reportgenerator.cpp:304 #, kde-format msgid "" "Please note: This offer contains %1 alternative or demand positions, printed" " in italic font. These do not add to the overall sum." msgstr "" "Bitte beachten: Dieses Angebot enthält %1 Alternativ- oder " "Bedarfspositionen, die kursiv gedruckt sind. Diese addieren sich nicht zur " "Endsumme." #: reportgenerator.cpp:315 #, kde-format msgid "tax free items (%1 pcs.)" msgstr "Steuerfreie Posten (%1 Stck.)" #: reportgenerator.cpp:321 #, kde-format msgid "items with reduced tax of %1% (%2 pcs.)" msgstr "Posten mit reduzierter Steuer %1% (%2 Stck.)" #: reportgenerator.cpp:330 #, kde-format msgid "No label: items with full tax of %1% (%2 pcs.)" msgstr "Nicht gekennzeichnet: Posten mit vollem Steuersatz von %1% (%2 Stck.)" #: reportgenerator.cpp:376 #, kde-format msgctxt "Sequence number printed on the document" msgid "No." msgstr "Nr." #: reportgenerator.cpp:377 #, kde-format msgctxt "Document item printed on the document" msgid "Item" msgstr "Posten" #: reportgenerator.cpp:378 #, kde-format msgctxt "Abbrev. of Quantity printed on the document" msgid "Qty." msgstr "Menge" #: reportgenerator.cpp:379 #, kde-format msgctxt "Unit printed on the document" msgid "Unit" msgstr "Einh." #: reportgenerator.cpp:380 #, kde-format msgctxt "Price of an item printed on the document" msgid "Price" msgstr "Preis" #: reportgenerator.cpp:381 #, kde-format msgctxt "Printed on the document" msgid "Sum" msgstr "Summe" #: reportgenerator.cpp:382 #, kde-format msgctxt "printed on the document" msgid "Net" msgstr "Netto" #: reportgenerator.cpp:383 #, kde-format msgctxt "Printed on the document" msgid "VAT" msgstr "MwSt." #: reportgenerator.cpp:385 #, kde-format msgctxt "Printed on the document" msgid "Phone" msgstr "Telefon" #: reportgenerator.cpp:386 #, kde-format msgctxt "Printed on the document" msgid "FAX" msgstr "Fax" #: reportgenerator.cpp:387 #, kde-format msgctxt "Printed on the document" msgid "Mobile" msgstr "Mobil" #: reportgenerator.cpp:388 #, kde-format msgctxt "Printed on the document" msgid "Email" msgstr "Email" #: reportgenerator.cpp:544 #, kde-format msgid "" "The utility to create PDF from the rml file could not be found, but is " "required to create documents.\n" msgstr "" "Das Script um PDFs aus den rml Dateien zu generieren kann nicht gefunden " "werden, aber es ist nötig um Dokumente zu erstellen.\n" #: reportgenerator.cpp:546 #, kde-format msgid "Please make sure the package is installed accordingly." msgstr "Bitte Paketinstallation überprüfen." #: reportgenerator.cpp:556 #, kde-format msgid "" "The Watermark file to merge with the document could not be found. Merge is " "going to be disabled." msgstr "" "Das einzubindende Wasserzeichen kann nicht gefunden werden. Die Einbindung " "des Wasserzeichens ist deshalb ausgeschaltet." #: reportgenerator.cpp:558 #, kde-format msgid "Watermark Error" msgstr "Wasserzeichenfehler" #: reportgenerator.cpp:616 #, kde-format msgid "The file to save the PDF could not be written in folder %1\n" msgstr "Die PDF Datei konnte nicht in das Verzeichnis %1 geschrieben werden.\n" #: reportgenerator.cpp:617 #, kde-format msgid "Please make sure that the output folder exists and is writeable." msgstr "" "Bitte stellen Sie sicher, dass das Verzeichnis existiert und beschreibbar " "ist." #: reportgenerator.cpp:638 #, kde-format msgid "Program ended with status %1" msgstr "Das Programm ist mit Status %1 beendet worden." #: reportgenerator.cpp:658 #, kde-format msgid "" "To generate PDF output, Kraft requires the python module ReportLab which can not be found.\n" "\n" "Please make sure the package is installed on your computer." msgstr "" "Um PDF-Ausgaben zu erstellen, benötigt Kraft das Pythonmodul " "ReportLab, das aber nicht gefunden wurde.
    Bitte überprüfen Sie, " "ob dieses Paket auf Ihrem Rechner installiert ist." #: reportgenerator.cpp:662 #, kde-format msgid "" "To generate PDF output, Kraft requires the python module pyPdf which can not be found.\n" "\n" "Please make sure the package is installed on your computer." msgstr "" "Um PDF-Ausgaben zu erstellen, benötigt Kraft das Pythonmodul pyPdf, " "das aber nicht gefunden wurde.
    Bitte überprüfen Sie, ob dieses Paket auf" " Ihrem Rechner installiert ist." #: reportgenerator.cpp:666 #, kde-format msgid "Unknown problem." msgstr "Unbekanntes Problem." #: reportgenerator.cpp:669 #, kde-format msgid "" "The PDF output file could not be generated. The creation script failed." msgstr "" "Die PDF-Datei kann nicht erstellt werden. Das Skript zur PDF-Erstellung ist " "fehlgeschlagen." #: reportgenerator.cpp:671 #, kde-format msgid "PDF Generation Error" msgstr "Fehler beim Erstellen der PDF-Datei" #: katalogview.cpp:152 #, kde-format msgid "Edit Sub chapter" msgstr "Unterkapitel bearbeiten" #: katalogview.cpp:154 #, kde-format msgid "Edit a catalog sub chapter" msgstr "Katalog-Unterkapitel bearbeiten" #: katalogview.cpp:158 #, kde-format msgid "Add a sub chapter" msgstr "Unterkapitel hinzufügen" #: katalogview.cpp:160 #, kde-format msgid "Add a sub chapter below the selected one" msgstr "Ein Unterkapitel unter dem ausgewählten hinzufügen" #: katalogview.cpp:164 katalogview.cpp:166 #, kde-format msgid "Remove a sub chapter" msgstr "Unterkapitel entfernen" #: katalogview.cpp:170 rc.cpp:3 rc.cpp:850 rc.cpp:1697 rc.cpp:2544 rc.cpp:3391 #, kde-format msgid "Edit Template" msgstr "Vorlage bearbeiten" #: katalogview.cpp:172 #, kde-format msgid "Opens the editor window for templates to edit the selected one" msgstr "Öffnet das Fenster zum Ändern der ausgewählten Vorlage." #: katalogview.cpp:177 #, kde-format msgid "New template" msgstr "Neue Vorlage" #: katalogview.cpp:179 #, kde-format msgid "Opens the editor window for templates to enter a new template" msgstr "Öffnet das Fenster zum Anlegen einer neuen Vorlage." #: katalogview.cpp:184 #, kde-format msgid "Delete template" msgstr "Vorlage löschen" #: katalogview.cpp:186 #, kde-format msgid "Deletes the template" msgstr "Löscht die Vorlage" #: katalogview.cpp:191 #, kde-format msgid "Export catalog" msgstr "Katalog exportieren" #: katalogview.cpp:193 #, kde-format msgid "Export the whole catalog as XML encoded file" msgstr "Den gesamten Katalog als XML-Datei exportieren." #: katalogview.cpp:198 #, kde-format msgid "Import catalog" msgstr "Katalog importieren" #: katalogview.cpp:200 #, kde-format msgid "Import a catalog from a XML file" msgstr "Katalog aus einer XML Datei einlesen " #: katalogview.cpp:204 rc.cpp:487 rc.cpp:1334 rc.cpp:2181 rc.cpp:3028 #: rc.cpp:4010 #, kde-format msgid "&Catalog" msgstr "&Katalog" #: katalogview.cpp:222 #, kde-format msgid "Opening file..." msgstr "Datei wird geöffnet ..." #: katalogview.cpp:295 #, kde-format msgid "Exporting file..." msgstr "Datei wird exportiert ..." #: katalogview.cpp:304 #, kde-format msgid "Importfile... (not yet implemented" msgstr "Datei importieren (noch nicht implementiert" #: katalogview.cpp:309 #, kde-format msgid "Creating a new sub chapter..." msgstr "Neues Unterkapitel wird erstellt ..." #: katalogview.cpp:318 #, kde-format msgid "Editing a sub chapter..." msgstr "Unterkapitel wird bearbeitet ..." #: katalogview.cpp:327 #, kde-format msgid "Removing a sub chapter..." msgstr "Unterkapitel wird entfernt ..." #: katalogview.cpp:359 #, kde-format msgid "Created at:%1" msgstr "Erstellt am:%1" #: katalogview.cpp:362 #, kde-format msgid "Modified at:%1" msgstr "Geändert am:%1" #: kraftview.cpp:265 #, kde-format msgid "Successor of %1" msgstr "Nachfolger von %1" #: kraftview.cpp:402 kraftview.cpp:846 #, kde-format msgid "" "The address label is not empty and different from the selected one.
    Do " "you really want to replace it with the text shown below?
    %1
    " msgstr "" "Die Adress-Beschriftung ist nicht leer und unterscheidet sich von der " "ausgewählten Adresse
    Möchten Sie sie wirklich mit diesem angezeigten " "Text ersetzen?
    %1
    " #: kraftview.cpp:449 #, kde-format msgid "" "

    The Document Items List is still empty, but Items can be added " "now.

    To add items to the document either
    • Press the 'Add item' " "button above.
    • Open the template catalog by clicking on the 'show " "Template' button on the right and pick one of the available " "templates.
    " msgstr "" "

    Die Postenliste ist noch leer, aber jetzt können Posten hinzugefügt werden.

    \n" "Um Posten hinzuzufügen\n" "
      \n" "
    • Drücken Sie den 'Posten hinzufügen' Knopf
    • Öffnen Sie den Vorlagenkatalog durch einen Klick auf den 'Vorlagen anzeigen' Knopf rechts und übertragen Sie eine der vorhandenen Vorlagen.
    • \n" "
    \n" " " #: kraftview.cpp:633 prefsdialog.cpp:305 #, kde-format msgid "Display no tax at all" msgstr "Keine Steuer auswerfen" #: kraftview.cpp:634 prefsdialog.cpp:306 #, kde-format msgid "Calculate reduced tax for all items" msgstr "Reduzierte Steuer für alle Posten" #: kraftview.cpp:635 prefsdialog.cpp:307 #, kde-format msgid "Calculate full tax for all items" msgstr "Allgemeine Steuer für alle Posten" #: kraftview.cpp:636 #, kde-format msgid "Calculate individual tax for each item" msgstr "Einzelne Steuern für jeden Posten berechnen" #: kraftview.cpp:693 #, kde-format msgid "Tax Settings Overwrite" msgstr "Steuer-Einstellungen überschreiben" #: kraftview.cpp:694 #, kde-format msgid "Really overwrite all individual tax settings of the items?" msgstr "" "Möchten Sie wirklich alle individuellen Steuer-Einstellungen für diesen " "Eintrag überschreiben?" #: kraftview.cpp:845 #, kde-format msgid "Address Overwrite" msgstr "Adresse überschreiben" #: kraftview.cpp:1092 #, kde-format msgid "Discount" msgstr "Rabatt" #: kraftview.cpp:1410 #, kde-format msgid "The document has been modified." msgstr "Das Dokuments wurde verändert." #: kraftview.cpp:1411 #, kde-format msgid "Do you want to save your changes?" msgstr "Sollen die Änderungen gesichert werden?" #: materialselectdialog.cpp:39 #, kde-format msgid "Add Material to Calculation" msgstr "Material zur Kalkulation hinzufügen" #: materialselectdialog.cpp:44 #, kde-format msgid "

    Add Material to Calculation

    " msgstr "

    Material zur Kalkulation hinzufügen

    " #: materialkataloglistview.cpp:39 rc.cpp:108 rc.cpp:619 rc.cpp:955 rc.cpp:1466 #: rc.cpp:1802 rc.cpp:2313 rc.cpp:2649 rc.cpp:3160 rc.cpp:3496 rc.cpp:4019 #, kde-format msgid "Material" msgstr "Material" #: materialkataloglistview.cpp:40 #, kde-format msgid "Pack" msgstr "Gebinde" #: materialkataloglistview.cpp:41 rc.cpp:123 rc.cpp:970 rc.cpp:1817 #: rc.cpp:2664 rc.cpp:3511 #, kde-format msgid "Unit" msgstr "Einheit" #: materialkataloglistview.cpp:42 #, kde-format msgid "Purchase" msgstr "Einkauf" #: materialkataloglistview.cpp:43 #, kde-format msgid "Sale" msgstr "Verkauf" #: materialkataloglistview.cpp:44 #, kde-format msgid "Last Modified" msgstr "Zuletzt geändert" #: materialkataloglistview.cpp:50 #, kde-format msgid "Material Catalog" msgstr "Material-Katalog" #: textselection.cpp:42 #, kde-format msgid "Template Collection" msgstr "Vorlagensammlung" #: textselection.cpp:100 #, kde-format msgid "Template Actions" msgstr "Vorlagenaktionen" #: textselection.cpp:129 #, kde-format msgid "This is the standard text used in new documents." msgstr "Dies ist der Standardtext, der in neuen Dokumenten verwendet wird." #: textselection.cpp:138 #, kde-format msgid "%1 Templates for %2" msgstr "%1 Vorlagen für %2" #: textselection.cpp:146 #, kde-format msgid "" "There is no %1 template text available for document type %2.
    Click the " "add-button below to create one." msgstr "" "Es ist kein Vorlagentext %1 für den Dokumenttyp %2 vorhanden.
    Klicken " "Sie auf den Knopf „Hinzufügen“ um einen Vorlagentext zu erstellen." #: textselection.cpp:201 #, kde-format msgid "&Use in Document" msgstr "Im Dokument &verwenden" #: models/docbasemodel.cpp:31 docdigestdetailview.cpp:404 #, kde-format msgid "Date" msgstr "Datum" #: models/docbasemodel.cpp:32 #, kde-format msgid "Doc. Number" msgstr "Dokumentennummer" #: models/docbasemodel.cpp:33 #, kde-format msgid "Doc. Type" msgstr "Dokumenttyp" #: models/docbasemodel.cpp:34 docdigestdetailview.cpp:409 #, kde-format msgid "Whiteboard" msgstr "Notizen" #: models/docbasemodel.cpp:35 #, kde-format msgid "Client Id" msgstr "Kundenkennung" #: models/docbasemodel.cpp:36 #, kde-format msgid "Last modified" msgstr "Zuletzt geändert" #: models/docbasemodel.cpp:37 #, kde-format msgid "Creation date" msgstr "Erstellungsdatum" #: models/docbasemodel.cpp:38 docdigestdetailview.cpp:414 #, kde-format msgid "Project" msgstr "Projekt" #: models/docbasemodel.cpp:39 #, kde-format msgid "Client Address" msgstr "Kundenadresse" #: models/docbasemodel.cpp:40 #, kde-format msgid "Client" msgstr "Kunde" #: models/docbasemodel.cpp:108 #, kde-format msgid "Looking up address" msgstr "Adresse wird gesucht" #: models/docbasemodel.cpp:110 #, kde-format msgid "Lookup started" msgstr "Suche gestartet" #: numbercycledialog.cpp:52 #, kde-format msgid "Edit Number Cycles" msgstr "Nummernbestimmung ändern" #: numbercycledialog.cpp:67 #, kde-format msgid "" "The template may contain the following tags:
    • %y or %yyyy - the year " "of the documents date.
    • %yy - the year of the document (two " "digits).
    • %w - the week number of the documents date.
    • %ww - " "the week number of the documents date with leading zero.
    • %d - the " "day number of the documents date.
    • %dd - the day number of the " "documents date with leading zero.
    • %m or %M - the month number of the" " documents date.
    • %MM - the month number with leading " "zero.
    • %c - the customer id from kaddressbook
    • %i - the unique" " counter
    • %type - the localised doc type (offer, invoice " "etc.)
    • %uid - the contact id of the client.
    %i needs to be " "part of the template." msgstr "" "Die Vorlage kann folgende Platzhalter enthalten (bezogen auf das Datum der " "Dokumentenerstellung):
    • %y oder %yyyy – Jahr
    • %yy – Jahr " "(zweistellig).
    • %w – Woche
    • %ww – Woche (immer " "zweistellig)
    • %d – Tag innerhalb des Monats
    • %dd – Tag " "innerhalb des Monats (immer zweistellig)
    • %m oder %M – " "Monat
    • %MM – Monat (immer zweistellig)
    • %i – Fortlaufende " "Zahl
    • %type – Lokalisierte Dokumentenart (Angebot, Rechnung " "usw.)
    • %uid - Die Kontakt-Kennung des Kunden.
    %1 muss in der" " Vorlage enthalten sein." #: numbercycledialog.cpp:138 #, kde-format msgid "Doc-Type" msgstr "Dokumenttyp" #: numbercycledialog.cpp:215 #, kde-format msgid "Add Number Cycle" msgstr "Nummernbestimmung hinzufügen" #: numbercycledialog.cpp:216 #, kde-format msgid "Enter the name of a new number cycle." msgstr "Geben Sie den Namen für die neue Nummernbestimmung an." #: numbercycledialog.cpp:274 #, kde-format msgid "The numbercycle %1 is still assigned to a document type." msgstr "Der Nummernkreis %1 ist noch einem Dokumenttyp zugeordnet." #: numbercycledialog.cpp:275 #, kde-format msgid "" "The number cycle can not be deleted as long as it is assigned to a document " "type." msgstr "" "Der Nummernkreis ist noch einer oder mehreren Dokumentenarten zugeordnet und" " kann erst nach Aufhebung aller Zuordnungen gelöscht werden." #: numbercycledialog.cpp:334 #, kde-format msgid "Dangerous Counter Change" msgstr "Gefährlicher neuer Anfangswert" #: numbercycledialog.cpp:335 #, kde-format msgid "The new counter is lower than the old one. " msgstr "Der neue Zähler ist kleiner als der alte." #: numbercycledialog.cpp:336 #, kde-format msgid "" "That has potential to create duplicate document numbers. Do you really want " "to decrease it?" msgstr "" "Der neue Anfangswert ist niedriger als der vorherige. Dadurch besteht die " "Möglichkeit, dass Dokumentennummern doppelt vergeben werden. Möchten Sie den" " neuen Anfangswert wirklich übernehmen?" #: docdigestdetailview.cpp:224 rc.cpp:78 rc.cpp:120 rc.cpp:925 rc.cpp:967 #: rc.cpp:1772 rc.cpp:1814 rc.cpp:2619 rc.cpp:2661 rc.cpp:3466 rc.cpp:3508 #, kde-format msgid "Amount" msgstr "Menge" #: docdigestdetailview.cpp:225 #, kde-format msgid "Type" msgstr "Art" #: docdigestdetailview.cpp:226 #, kde-format msgid "Sum" msgstr "Summe" #: docdigestdetailview.cpp:254 #, kde-format msgid "Results in %1 %2" msgstr "Resultate in %1 %2" #: docdigestdetailview.cpp:255 docdigestdetailview.cpp:287 #, kde-format msgid "Year" msgstr "Jahr" #: docdigestdetailview.cpp:257 #, kde-format msgid "Month" msgstr "Monat" #: docdigestdetailview.cpp:289 #, kde-format msgid "Results in Year %1" msgstr "Resultate im Jahr %1" #: docdigestdetailview.cpp:308 docdigestdetailview.cpp:317 #, kde-format msgid "Customer" msgstr "Kunde:" #: docdigestdetailview.cpp:312 #, kde-format msgid "not set" msgstr "nicht ausgewählt" #: docdigestdetailview.cpp:328 #, kde-format msgid "The address is not listed in an address book." msgstr "Die Adresse ist in keinem Adressbuch enthalten." #: docdigestdetailview.cpp:330 #, kde-format msgid "" "The client has the address book id %1 but can not found in our address " "books." msgstr "" "Der Kunde hat die Adressbuch-Kennung %1, wurde aber nicht in unseren " "Adressbüchern gefunden." #: docdigestdetailview.cpp:333 #, kde-format msgid "The client can be found in our address books." msgstr "Der Kunde wurde in unseren Adressbüchern gefunden." #: docdigestdetailview.cpp:344 prefsdialog.cpp:533 #, kde-format msgid "preferred address" msgstr "Bevorzugte Adresse" #: docdigestdetailview.cpp:348 prefsdialog.cpp:537 #, kde-format msgid "home address" msgstr "Privatanschrift" #: docdigestdetailview.cpp:352 prefsdialog.cpp:541 #, kde-format msgid "work address" msgstr "Arbeitsplatzadresse" #: docdigestdetailview.cpp:356 prefsdialog.cpp:545 #, kde-format msgid "postal address" msgstr "Postanschrift" #: docdigestdetailview.cpp:360 prefsdialog.cpp:549 #, kde-format msgid "international address" msgstr "Internationale Adresse" #: docdigestdetailview.cpp:364 prefsdialog.cpp:553 #, kde-format msgid "domestic address" msgstr "Privatanschrift" #: docdigestdetailview.cpp:368 prefsdialog.cpp:557 #, kde-format msgid "unknown" msgstr "Unbekannt" #: docdigestdetailview.cpp:424 #, kde-format msgid "This document was never printed." msgstr "Das Dokuments wurde nie gedruckt." #: docdigestdetailview.cpp:428 #, kde-format msgid "Last printed" msgstr "Zuletzt gedruckt" #: docdigestdetailview.cpp:429 #, kde-format msgid "Opens last created PDF document" msgstr "Öffnet das letzte erstellte PDF Dokument" #: docdigestdetailview.cpp:430 #, kde-format msgid "open" msgstr "offen" #: docdigestdetailview.cpp:434 #, kde-format msgid "One older print" msgstr "Ein älterer Ausdruck" #: docdigestdetailview.cpp:436 #, kde-format msgid "%1 older prints" msgstr "%1 alte Ausdrucke" #: prefsdialog.cpp:66 #, kde-format msgid "Configure Kraft" msgstr "Kraft einrichten" #: prefsdialog.cpp:96 #, kde-format msgid "Taxes" msgstr "Steuersätze" #: prefsdialog.cpp:104 #, kde-format msgid "Tax rates beginning at date:" msgstr "Steuersätze nach Datum:" #: prefsdialog.cpp:112 prefsunits.cpp:53 prefswages.cpp:51 #, kde-format msgid "ID" msgstr "ID" #: prefsdialog.cpp:113 #, kde-format msgid "Full Tax [%]" msgstr "Allgemeiner Steuersatz" #: prefsdialog.cpp:114 #, kde-format msgid "Reduced Tax [%]" msgstr "Reduzierter Steuersatz" #: prefsdialog.cpp:115 #, kde-format msgid "Start Date" msgstr "Anfangsdatum:" #: prefsdialog.cpp:134 prefsunits.cpp:79 prefswages.cpp:90 rc.cpp:307 #: rc.cpp:1154 rc.cpp:2001 rc.cpp:2848 rc.cpp:3695 #, kde-format msgid "Add" msgstr "Hinzufügen" #: prefsdialog.cpp:151 #, kde-format msgid "Wages" msgstr "Löhne" #: prefsdialog.cpp:160 #, kde-format msgid "Units" msgstr "Maßeinheiten" #: prefsdialog.cpp:169 #, kde-format msgid "Own Identity" msgstr "Eigene Identität" #: prefsdialog.cpp:175 #, kde-format msgid "" "Select the identity of the sending entity of documents. That's your " "companies address." msgstr "" "Wählen Sie die Identität für den Versand von Dokumenten. Das ist Ihre " "Firmenadresse." #: prefsdialog.cpp:191 #, kde-format msgid "Select Identity..." msgstr "Identität auswählen ..." #: prefsdialog.cpp:197 #, kde-format msgid "From AddressBook" msgstr "aus dem Adressbuch" #: prefsdialog.cpp:214 #, kde-format msgid "Manual Address" msgstr "Manuelle Adresse" #: prefsdialog.cpp:263 #, kde-format msgid "Document Defaults" msgstr "Dokumentenstandards" #: prefsdialog.cpp:271 #, kde-format msgid "&Default document type on creation:" msgstr "&Standard-Dokumenttyp bei Erstellung:" #: prefsdialog.cpp:276 #, kde-format msgid "New documents default to the selected type." msgstr "Neue Dokumente sind standardmäßig von diesem Typ." #: prefsdialog.cpp:285 #, kde-format msgid "Enable &Localization on Document Level" msgstr "&Lokalisierung auf Dokumentenebene verwenden" #: prefsdialog.cpp:286 #, kde-format msgid "" "Checking this enables language settings for each document.
    Leave it " "unchecked to use the KDE Workspace default settings for the document " "localisation." msgstr "" "Ist diese Einstellung aktiviert, werden die Spracheinstellungen für jedes " "Dokument gesetzt.
    Ist es nicht ausgewählt, werden die Voreinstellungen " "der KDE-Arbeitsumgebung für die sprachlichen Besonderheiten der Dokumente " "verwendet." #: prefsdialog.cpp:298 #, kde-format msgid "Default &Tax for Documents:" msgstr "Standardmäßiger &Steuersatz:" #: prefsdialog.cpp:304 #, kde-format msgid "The default tax setting for all documents." msgstr "" "Die standardmäßigen Einstellungen des Steuersatzes für alle Dokumente." #: prefsdialog.cpp:320 #, kde-format msgid "Document Types" msgstr "Dokumentenart" #: prefsdialog.cpp:342 #, kde-format msgid "" "The old default doc type for new documents was just deleted.Please check the" " setting in the Document Defaults in the Kraft preferences Dialog." msgstr "" "Der alte Standard-Dokumenttyp für neue Dokumente wurde gelöscht. Bitte " "überprüfen Sie die Einstellung der Dokumentenstandards im Dialog " "Einstellungen von Kraft." #: prefsdialog.cpp:345 #, kde-format msgid "Document Default Change" msgstr "Änderung des Standard-Dokumenttyps" #: prefsdialog.cpp:490 #, kde-format msgid "The identity can not be found." msgstr "Die Identität ist in keinem Adressbuch enthalten." #: prefsdialog.cpp:492 #, kde-format msgid "" "

    Kraft Addressbook Integration down.

    The address book backend" " is not up and running.

    Please check your addressbook integration " "setup.

    " msgstr "" "

    Die Kraft Adressbuch-Integration funktioniert nicht

    Das " "Adressbuch-Backend läuft nicht.

    Bitte Adressbuch-Setup überprüfen

    " #: prefsdialog.cpp:498 #, kde-format msgid "The identity is not listed in an address book." msgstr "Die Identität ist in keinem Adressbuch enthalten." #: prefsdialog.cpp:500 #, kde-format msgid "" "

    Kraft does not know your identity.

    Please pick one from the " "address books by clicking on the Button below.

    Not having an identity " "selected can make your documents look incomplete.

    " msgstr "" "

    Ihre Identität ist nicht eingestellt.

    Bitte wählen Sie eine " "Identität aus dem Adressbuch, indem Sie auf den Knopf unten " "klicken..

    Haben Sie keine Identität ausgewählt, dann werden Ihre " "Dokumente unvollständig aussehen.

    " #: prefsdialog.cpp:517 #, kde-format msgid "Your identity can be found in the address books." msgstr "Ihre Identität wurde in den Adressbüchern gefunden." #: prefsdialog.cpp:528 #, kde-format msgid "Work Phone" msgstr "Telefon (Arbeit)" #: prefsdialog.cpp:529 #, kde-format msgid "Fax" msgstr "Fax" #: prefsdialog.cpp:530 #, kde-format msgid "Cell Phone" msgstr "Mobiltelefon" #: prefsunits.cpp:54 #, kde-format msgid "Short" msgstr "Kurz" #: prefsunits.cpp:55 #, kde-format msgid "Long" msgstr "Lang" #: prefsunits.cpp:56 #, kde-format msgid "Short plural" msgstr "Mehrzahl kurz" #: prefsunits.cpp:57 #, kde-format msgid "Long plural" msgstr "Mehrzahl lang" #: prefsunits.cpp:83 prefswages.cpp:94 rc.cpp:313 rc.cpp:1160 rc.cpp:2007 #: rc.cpp:2854 rc.cpp:3701 #, kde-format msgid "Edit" msgstr "Bearbeiten" #: prefsunits.cpp:152 #, kde-format msgid "Edit a unit" msgstr "Eine Maßeinheit bearbeiten" #: prefsunits.cpp:195 #, kde-format msgid "

    Edit unit

    " msgstr "

    Maßeinheit bearbeiten

    " #: prefswages.cpp:52 #, kde-format msgid "Code" msgstr "Code" #: prefswages.cpp:54 #, kde-format msgid "Sortkey" msgstr "Sortierschlüssel" #: prefswages.cpp:80 #, kde-format msgid "Up" msgstr "Nach oben" #: prefswages.cpp:85 #, kde-format msgid "Down" msgstr "Nach unten" #: prefswages.cpp:201 #, kde-format msgid "Edit a wage group" msgstr "Lohngruppe bearbeiten" #: prefswages.cpp:241 #, kde-format msgid "

    Edit wage group

    " msgstr "

    Lohngruppe bearbeiten

    " #: rc.cpp:9 rc.cpp:856 rc.cpp:1703 rc.cpp:2550 rc.cpp:3397 #, kde-format msgid "Text:" msgstr "Text:" #: rc.cpp:12 rc.cpp:859 rc.cpp:1706 rc.cpp:2553 rc.cpp:3400 #, kde-format msgid "&Store in Chapter" msgstr "In Kategorie s&peichern" #: rc.cpp:15 rc.cpp:862 rc.cpp:1709 rc.cpp:2556 rc.cpp:3403 #, kde-format msgid "&Unit" msgstr "&Einheit" #: rc.cpp:18 rc.cpp:865 rc.cpp:1712 rc.cpp:2559 rc.cpp:3406 #, kde-format msgid "&Count Time for Overalltime" msgstr "Zeiten für &Gesamtzeit zusammenzählen" #: rc.cpp:24 rc.cpp:871 rc.cpp:1718 rc.cpp:2565 rc.cpp:3412 #, kde-format msgid "full" msgstr "Allgemein" #: rc.cpp:27 rc.cpp:874 rc.cpp:1721 rc.cpp:2568 rc.cpp:3415 #, kde-format msgid "half" msgstr "Reduziert" #: rc.cpp:30 rc.cpp:877 rc.cpp:1724 rc.cpp:2571 rc.cpp:3418 #, kde-format msgid "Time Calculation" msgstr "Arbeitszeit" #: rc.cpp:33 rc.cpp:72 rc.cpp:111 rc.cpp:880 rc.cpp:919 rc.cpp:958 rc.cpp:1727 #: rc.cpp:1766 rc.cpp:1805 rc.cpp:2574 rc.cpp:2613 rc.cpp:2652 rc.cpp:3421 #: rc.cpp:3460 rc.cpp:3499 #, kde-format msgid "text" msgstr "text" #: rc.cpp:36 rc.cpp:883 rc.cpp:1730 rc.cpp:2577 rc.cpp:3424 #, kde-format msgid "Time measureable effort for this template:" msgstr "In Geldeinheiten umgerechneter Zeitaufwand für diese Vorlage:" #: rc.cpp:39 rc.cpp:81 rc.cpp:117 rc.cpp:886 rc.cpp:928 rc.cpp:964 rc.cpp:1733 #: rc.cpp:1775 rc.cpp:1811 rc.cpp:2580 rc.cpp:2622 rc.cpp:2658 rc.cpp:3427 #: rc.cpp:3469 rc.cpp:3505 #, kde-format msgid "Label" msgstr "Bezeichnung" #: rc.cpp:42 rc.cpp:889 rc.cpp:1736 rc.cpp:2583 rc.cpp:3430 #, kde-format msgid "Duration" msgstr "Dauer" #: rc.cpp:45 rc.cpp:892 rc.cpp:1739 rc.cpp:2586 rc.cpp:3433 #, kde-format msgid "Hourly Rate" msgstr "Stundensatz" #: rc.cpp:48 rc.cpp:895 rc.cpp:1742 rc.cpp:2589 rc.cpp:3436 #, kde-format msgid "Glob. Rate" msgstr "Glob. Tarif" #: rc.cpp:51 rc.cpp:898 rc.cpp:1745 rc.cpp:2592 rc.cpp:3439 #, kde-format msgid "Adds a new time calculation part to the template" msgstr "Fügt eine neue Komponente zur Zeitberechnung zur Vorlage hinzu" #: rc.cpp:54 rc.cpp:93 rc.cpp:132 rc.cpp:901 rc.cpp:940 rc.cpp:979 rc.cpp:1748 #: rc.cpp:1787 rc.cpp:1826 rc.cpp:2595 rc.cpp:2634 rc.cpp:2673 rc.cpp:3442 #: rc.cpp:3481 rc.cpp:3520 #, kde-format msgid "new..." msgstr "Neu ..." #: rc.cpp:57 rc.cpp:904 rc.cpp:1751 rc.cpp:2598 rc.cpp:3445 #, kde-format msgid "Edits the current time calculation part" msgstr "Ändert die aktuelle Komponente zur Zeitberechnung" #: rc.cpp:60 rc.cpp:99 rc.cpp:138 rc.cpp:907 rc.cpp:946 rc.cpp:985 rc.cpp:1754 #: rc.cpp:1793 rc.cpp:1832 rc.cpp:2601 rc.cpp:2640 rc.cpp:2679 rc.cpp:3448 #: rc.cpp:3487 rc.cpp:3526 #, kde-format msgid "edit..." msgstr "Bearbeiten ..." #: rc.cpp:63 rc.cpp:910 rc.cpp:1757 rc.cpp:2604 rc.cpp:3451 #, kde-format msgid "Deletes the current time calculation part" msgstr "Löscht die aktuelle Komponente zur Zeitberechnung" #: rc.cpp:66 rc.cpp:105 rc.cpp:144 rc.cpp:913 rc.cpp:952 rc.cpp:991 #: rc.cpp:1760 rc.cpp:1799 rc.cpp:1838 rc.cpp:2607 rc.cpp:2646 rc.cpp:2685 #: rc.cpp:3454 rc.cpp:3493 rc.cpp:3532 #, kde-format msgid "delete" msgstr "Entfernen" #: rc.cpp:69 rc.cpp:916 rc.cpp:1763 rc.cpp:2610 rc.cpp:3457 #, kde-format msgid "Fix Costs" msgstr "Fixkosten" #: rc.cpp:75 rc.cpp:922 rc.cpp:1769 rc.cpp:2616 rc.cpp:3463 #, kde-format msgid "Fix costs for this template per one unit:" msgstr "Fixkosten für diese Vorlage für eine Einheit:" #: rc.cpp:84 rc.cpp:931 rc.cpp:1778 rc.cpp:2625 rc.cpp:3472 #, kde-format msgid "Single Price" msgstr "Einzelpreis" #: rc.cpp:87 rc.cpp:934 rc.cpp:1781 rc.cpp:2628 rc.cpp:3475 #, kde-format msgid "Overall Price" msgstr "Gesamtpreis" #: rc.cpp:90 rc.cpp:937 rc.cpp:1784 rc.cpp:2631 rc.cpp:3478 #, kde-format msgid "adds a new fix calculation part" msgstr "Fügt eine neue Festpreis-Kalkulationskomponente hinzu" #: rc.cpp:96 rc.cpp:943 rc.cpp:1790 rc.cpp:2637 rc.cpp:3484 #, kde-format msgid "edits the current fix calculation part" msgstr "Festpreis-Kalkulationskomponente bearbeiten" #: rc.cpp:102 rc.cpp:949 rc.cpp:1796 rc.cpp:2643 rc.cpp:3490 #, kde-format msgid "deletes the current fix calculation part" msgstr "Festpreis-Kalkulationskomponente entfernen" #: rc.cpp:114 rc.cpp:961 rc.cpp:1808 rc.cpp:2655 rc.cpp:3502 #, kde-format msgid "Needed materials for one unit of this template:" msgstr "Benötigte Materialien für eine Einheit dieser Vorlage:" #: rc.cpp:129 rc.cpp:976 rc.cpp:1823 rc.cpp:2670 rc.cpp:3517 #, kde-format msgid "adds a new material calculation part" msgstr "Fügt eine neue Material-Kalkulationskomponente hinzu" #: rc.cpp:135 rc.cpp:982 rc.cpp:1829 rc.cpp:2676 rc.cpp:3523 #, kde-format msgid "edits the current material part" msgstr "Material-Kalkulationskomponente bearbeiten" #: rc.cpp:141 rc.cpp:988 rc.cpp:1835 rc.cpp:2682 rc.cpp:3529 #, kde-format msgid "deletes the current material calculation part" msgstr "Material-Kalkulationskomponente entfernen" #: rc.cpp:147 rc.cpp:994 rc.cpp:1841 rc.cpp:2688 rc.cpp:3535 #, kde-format msgid "Overall Price per Unit" msgstr "Gesamtpreis pro Einheit" #: rc.cpp:150 rc.cpp:997 rc.cpp:1844 rc.cpp:2691 rc.cpp:3538 #, kde-format msgid "&Manual Price" msgstr "&Manueller Preis" #: rc.cpp:153 rc.cpp:1000 rc.cpp:1847 rc.cpp:2694 rc.cpp:3541 #, kde-format msgid "Calculated Price" msgstr "Kalkulierter Preis" #: rc.cpp:156 rc.cpp:1003 rc.cpp:1850 rc.cpp:2697 rc.cpp:3544 #, kde-format msgid "Fix Costs Part:" msgstr "Fixkostenanteil:" #: rc.cpp:159 rc.cpp:1006 rc.cpp:1853 rc.cpp:2700 rc.cpp:3547 #, kde-format msgid "Material Part:" msgstr "Material-Anteil:" #: rc.cpp:162 rc.cpp:1009 rc.cpp:1856 rc.cpp:2703 rc.cpp:3550 #, kde-format msgid "Profit:" msgstr "Gewinn:" #: rc.cpp:166 rc.cpp:1013 rc.cpp:1860 rc.cpp:2707 rc.cpp:3554 #, no-c-format, kde-format msgid " %" msgstr " %" #: rc.cpp:169 rc.cpp:1016 rc.cpp:1863 rc.cpp:2710 rc.cpp:3557 #, kde-format msgid "Time Calculation Part:" msgstr "Arbeitszeit:" #: rc.cpp:172 rc.cpp:1019 rc.cpp:1866 rc.cpp:2713 rc.cpp:3560 #, kde-format msgid "Calculated Price:" msgstr "Kalkulierter Preis:" #: rc.cpp:175 rc.cpp:1022 rc.cpp:1869 rc.cpp:2716 rc.cpp:3563 #, kde-format msgid "88.888,88 €" msgstr "88.888,88 €" #: rc.cpp:178 rc.cpp:1025 rc.cpp:1872 rc.cpp:2719 rc.cpp:3566 #, kde-format msgid "Database creation and initial schema setup:" msgstr "Einrichtung der Datenbank und Setup des Anfangsschemas:" #: rc.cpp:181 rc.cpp:190 rc.cpp:829 rc.cpp:1028 rc.cpp:1037 rc.cpp:1676 #: rc.cpp:1875 rc.cpp:1884 rc.cpp:2523 rc.cpp:2722 rc.cpp:2731 rc.cpp:3370 #: rc.cpp:3569 rc.cpp:3578 rc.cpp:4229 #, kde-format msgid "0 / 129" msgstr "0 / 129" #: rc.cpp:184 rc.cpp:193 rc.cpp:832 rc.cpp:1031 rc.cpp:1040 rc.cpp:1679 #: rc.cpp:1878 rc.cpp:1887 rc.cpp:2526 rc.cpp:2725 rc.cpp:2734 rc.cpp:3373 #: rc.cpp:3572 rc.cpp:3581 rc.cpp:4232 #, kde-format msgid "X" msgstr "X" #: rc.cpp:187 rc.cpp:1034 rc.cpp:1881 rc.cpp:2728 rc.cpp:3575 #, kde-format msgid "Filling the database with initial values:" msgstr "Füllen der Datenbank mit Anfangswerten:" #: rc.cpp:196 rc.cpp:835 rc.cpp:1043 rc.cpp:1682 rc.cpp:1890 rc.cpp:2529 #: rc.cpp:2737 rc.cpp:3376 rc.cpp:3584 rc.cpp:4235 #, kde-format msgid "Status: " msgstr "Status: " #: rc.cpp:199 rc.cpp:1046 rc.cpp:1893 rc.cpp:2740 rc.cpp:3587 #, kde-format msgid "Database setup status..." msgstr "Status der Datenbank-Einrichtung ..." #: rc.cpp:202 rc.cpp:1049 rc.cpp:1896 rc.cpp:2743 rc.cpp:3590 #, kde-format msgid "Bruns Data File:" msgstr "Bruns-Datendatei:" #: rc.cpp:205 rc.cpp:1052 rc.cpp:1899 rc.cpp:2746 rc.cpp:3593 #, kde-format msgid "Bruns Key File:" msgstr "Bruns-Schlüsseldatei:" #: rc.cpp:208 rc.cpp:1055 rc.cpp:1902 rc.cpp:2749 rc.cpp:3596 #, kde-format msgid "Qt Database Driver:" msgstr "Qt-Datenbank-Treiber:" #: rc.cpp:211 rc.cpp:1058 rc.cpp:1905 rc.cpp:2752 rc.cpp:3599 #, kde-format msgid "Database Server:" msgstr "Datenbank-Server:" #: rc.cpp:214 rc.cpp:1061 rc.cpp:1908 rc.cpp:2755 rc.cpp:3602 #, kde-format msgid "Server Port:" msgstr "Server Port:" #: rc.cpp:217 rc.cpp:1064 rc.cpp:1911 rc.cpp:2758 rc.cpp:3605 #, kde-format msgid "Database Name" msgstr "Datenbankname" #: rc.cpp:220 rc.cpp:676 rc.cpp:1067 rc.cpp:1523 rc.cpp:1914 rc.cpp:2370 #: rc.cpp:2761 rc.cpp:3217 rc.cpp:3608 rc.cpp:4076 #, kde-format msgid "Database User:" msgstr "Datenbank-Benutzer:" #: rc.cpp:223 rc.cpp:1070 rc.cpp:1917 rc.cpp:2764 rc.cpp:3611 #, kde-format msgid "Database Password:" msgstr "Datenbank-Passwort:" #: rc.cpp:226 rc.cpp:1073 rc.cpp:1920 rc.cpp:2767 rc.cpp:3614 #, kde-format msgid "The default database name when creating new databases" msgstr "Standard-Datenbankname bei neu erstellter Datenbank" #: rc.cpp:229 rc.cpp:1076 rc.cpp:1923 rc.cpp:2770 rc.cpp:3617 #, kde-format msgid "File Name" msgstr "Dateiname" #: rc.cpp:232 rc.cpp:1079 rc.cpp:1926 rc.cpp:2773 rc.cpp:3620 #, kde-format msgid "The path where database file are stored. Leave empty!" msgstr "Pfad zu den Datenbankdateien. Leer lassen!" #: rc.cpp:235 rc.cpp:1082 rc.cpp:1929 rc.cpp:2776 rc.cpp:3623 #, kde-format msgid "Database Update:" msgstr "Datenbank-Aktualisierung:" #: rc.cpp:238 rc.cpp:1085 rc.cpp:1932 rc.cpp:2779 rc.cpp:3626 #, kde-format msgid "Overall Progress:" msgstr "Gesamtfortschritt:" #: rc.cpp:241 rc.cpp:1088 rc.cpp:1935 rc.cpp:2782 rc.cpp:3629 #, kde-format msgid "Detail Progress:" msgstr "Fortschrittsanzeige:" #: rc.cpp:244 rc.cpp:1091 rc.cpp:1938 rc.cpp:2785 rc.cpp:3632 #, kde-format msgid "Status:" msgstr "Status:" #: rc.cpp:247 rc.cpp:1094 rc.cpp:1941 rc.cpp:2788 rc.cpp:3635 #, kde-format msgid "" "

    Kraft uses a database backend to store values. By " "default it uses a file based database with easy setup targeted to single " "user mode.


    " msgstr "" "

    Kraft nutzt ein Datenbank-Backend, um Werte zu " "speichern. Standardmäßig wird eine dateibasierte Datenbank mit einfacher " "Einrichtung verwendet, die auf Einbenutzerbetrieb ausgelegt ist. " "


    Bitte wählen Sie das Datenbank-Backend, das " "Sie verwenden möchten:" #: rc.cpp:250 rc.cpp:1097 rc.cpp:1944 rc.cpp:2791 rc.cpp:3638 #, kde-format msgid "SQLite 3 - file based database (default)" msgstr "SQLite 3 – Datei-basierte Datenbank (Voreinstellung)" #: rc.cpp:253 rc.cpp:1100 rc.cpp:1947 rc.cpp:2794 rc.cpp:3641 #, kde-format msgid "MySQL Serverbased Database for advanced Setups" msgstr "MySQL – Server-basierte Datenbank für fortgeschrittene Einrichtungen" #: rc.cpp:256 rc.cpp:1103 rc.cpp:1950 rc.cpp:2797 rc.cpp:3644 #, kde-format msgid "TextLabel" msgstr "Textlabel" #: rc.cpp:259 rc.cpp:1106 rc.cpp:1953 rc.cpp:2800 rc.cpp:3647 #, kde-format msgid "&Project:" msgstr "&Projekt:" #: rc.cpp:262 rc.cpp:1109 rc.cpp:1956 rc.cpp:2803 rc.cpp:3650 #, kde-format msgid "&Whiteboard:" msgstr "&Notizen:" #: rc.cpp:265 rc.cpp:1112 rc.cpp:1959 rc.cpp:2806 rc.cpp:3653 #, kde-format msgid "" "Enter a label that describes the project. This may appear on the customer " "document." msgstr "" "Geben Sie eine Beschriftung an, die das Projekt beschreibt. Diese kann auf " "dem Kundendokument erscheinen." #: rc.cpp:268 rc.cpp:1115 rc.cpp:1962 rc.cpp:2809 rc.cpp:3656 #, kde-format msgid "Postal &Address:" msgstr "&Anschrift:" #: rc.cpp:271 rc.cpp:1118 rc.cpp:1965 rc.cpp:2812 rc.cpp:3659 #, kde-format msgid "not selected" msgstr "nicht ausgewählt" #: rc.cpp:274 rc.cpp:1121 rc.cpp:1968 rc.cpp:2815 rc.cpp:3662 #, kde-format msgid "Select an addressee from the address books." msgstr "Wählt eine Adresse aus den Adressbüchern." #: rc.cpp:277 rc.cpp:1124 rc.cpp:1971 rc.cpp:2818 rc.cpp:3665 #, kde-format msgid "select..." msgstr "Auswählen ..." #: rc.cpp:280 rc.cpp:1127 rc.cpp:1974 rc.cpp:2821 rc.cpp:3668 #, kde-format msgid "&Salutatory Address:" msgstr "&Grußformel:" #: rc.cpp:283 rc.cpp:1130 rc.cpp:1977 rc.cpp:2824 rc.cpp:3671 #, kde-format msgid "Customer:" msgstr "Kunde:" #: rc.cpp:286 rc.cpp:1133 rc.cpp:1980 rc.cpp:2827 rc.cpp:3674 #, kde-format msgid "&Entry Text on First Page:" msgstr "&Einleitender Text auf der ersten Seite:" #: rc.cpp:289 rc.cpp:1136 rc.cpp:1983 rc.cpp:2830 rc.cpp:3677 #, kde-format msgid "Footer Texts" msgstr "Fußzeilentexte" #: rc.cpp:292 rc.cpp:1139 rc.cpp:1986 rc.cpp:2833 rc.cpp:3680 #, kde-format msgid "&Summary Text on Last Page:" msgstr "&Zusammenfassung auf letzter Seite:" #: rc.cpp:295 rc.cpp:1142 rc.cpp:1989 rc.cpp:2836 rc.cpp:3683 #, kde-format msgid "&Greeting:" msgstr "&Anrede:" #: rc.cpp:298 rc.cpp:1145 rc.cpp:1992 rc.cpp:2839 rc.cpp:3686 #: positionviewwidget.cpp:102 #, kde-format msgid "Tax" msgstr "Steuer" #: rc.cpp:301 rc.cpp:1148 rc.cpp:1995 rc.cpp:2842 rc.cpp:3689 #, kde-format msgid "Document &Tax:" msgstr "&Steuersatz:" #: rc.cpp:304 rc.cpp:718 rc.cpp:1151 rc.cpp:1565 rc.cpp:1998 rc.cpp:2412 #: rc.cpp:2845 rc.cpp:3259 rc.cpp:3692 rc.cpp:4118 #, kde-format msgid "Click to add a new document type to the list." msgstr "Klicken Sie, um der Liste einen neuen Dokumenttyp hinzuzufügen." #: rc.cpp:310 rc.cpp:1157 rc.cpp:2004 rc.cpp:2851 rc.cpp:3698 #, kde-format msgid "click to edit the selected document type name" msgstr "" "Klicken Sie hier, um den Namen des ausgewählten Dokumenttyps zu bearbeiten." #: rc.cpp:316 rc.cpp:724 rc.cpp:1163 rc.cpp:1571 rc.cpp:2010 rc.cpp:2418 #: rc.cpp:2857 rc.cpp:3265 rc.cpp:3704 rc.cpp:4124 #, kde-format msgid "click to remove the current document type" msgstr "Klicken Sie hier, um den aktuellen Dokumenttyp zu entfernen." #: rc.cpp:322 rc.cpp:1169 rc.cpp:2016 rc.cpp:2863 rc.cpp:3710 #, kde-format msgid "Unique Document Number" msgstr "Eindeutige Dokumentennummer" #: rc.cpp:325 rc.cpp:1172 rc.cpp:2019 rc.cpp:2866 rc.cpp:3713 #, kde-format msgid "Number &Cycle:" msgstr "Nummern&bestimmung:" #: rc.cpp:328 rc.cpp:337 rc.cpp:340 rc.cpp:709 rc.cpp:1175 rc.cpp:1184 #: rc.cpp:1187 rc.cpp:1556 rc.cpp:2022 rc.cpp:2031 rc.cpp:2034 rc.cpp:2403 #: rc.cpp:2869 rc.cpp:2878 rc.cpp:2881 rc.cpp:3250 rc.cpp:3716 rc.cpp:3725 #: rc.cpp:3728 rc.cpp:4109 #, kde-format msgid "example" msgstr "Beispiel" #: rc.cpp:331 rc.cpp:1178 rc.cpp:2025 rc.cpp:2872 rc.cpp:3719 #, kde-format msgid "ident Template:" msgstr "Nummernvorlage:" #: rc.cpp:334 rc.cpp:703 rc.cpp:1181 rc.cpp:1550 rc.cpp:2028 rc.cpp:2397 #: rc.cpp:2875 rc.cpp:3244 rc.cpp:3722 rc.cpp:4103 #, kde-format msgid "Example Id:" msgstr "Beispielnummer:" #: rc.cpp:343 rc.cpp:1190 rc.cpp:2037 rc.cpp:2884 rc.cpp:3731 #, kde-format msgid "Counter:" msgstr "Anfangswert:" #: rc.cpp:346 rc.cpp:1193 rc.cpp:2040 rc.cpp:2887 rc.cpp:3734 #, kde-format msgid "&Edit Number Cycles..." msgstr "Nummernkreise &bearbeiten ..." #: rc.cpp:349 rc.cpp:1196 rc.cpp:2043 rc.cpp:2890 rc.cpp:3737 #, kde-format msgid "Template for PDF Creation" msgstr "Vorlage für PDF-Erstellung" #: rc.cpp:352 rc.cpp:1199 rc.cpp:2046 rc.cpp:2893 rc.cpp:3740 #, kde-format msgid "&Template File" msgstr "&Vorlagendatei" #: rc.cpp:355 rc.cpp:1202 rc.cpp:2049 rc.cpp:2896 rc.cpp:3743 #, kde-format msgid "W&atermark:" msgstr "W&asserzeichen:" #: rc.cpp:358 rc.cpp:1205 rc.cpp:2052 rc.cpp:2899 rc.cpp:3746 #, kde-format msgid "no watermark" msgstr "Kein Wasserzeichen" #: rc.cpp:361 rc.cpp:1208 rc.cpp:2055 rc.cpp:2902 rc.cpp:3749 #, kde-format msgid "on first page" msgstr "Auf erster Seite" #: rc.cpp:364 rc.cpp:1211 rc.cpp:2058 rc.cpp:2905 rc.cpp:3752 #, kde-format msgid "on all pages" msgstr "Auf allen Seiten" #: rc.cpp:367 rc.cpp:1214 rc.cpp:2061 rc.cpp:2908 rc.cpp:3755 #, kde-format msgid "&Watermark File" msgstr "&Wasserzeichendatei" #: rc.cpp:370 rc.cpp:1217 rc.cpp:2064 rc.cpp:2911 rc.cpp:3758 #, kde-format msgid "Calculation Parts Fix" msgstr "Fixkostenanteil der Kalkulation" #: rc.cpp:373 rc.cpp:1220 rc.cpp:2067 rc.cpp:2914 rc.cpp:3761 #, kde-format msgid "

    Fix Cost Parts

    " msgstr "

    Fixkostenanteil

    " #: rc.cpp:376 rc.cpp:1223 rc.cpp:2070 rc.cpp:2917 rc.cpp:3764 #, kde-format msgid "Add a fix cost for one unit of the template:" msgstr "Fixkosten für eine Einheit der Vorlage hinzufügen" #: rc.cpp:379 rc.cpp:739 rc.cpp:1226 rc.cpp:1586 rc.cpp:2073 rc.cpp:2433 #: rc.cpp:2920 rc.cpp:3280 rc.cpp:3767 rc.cpp:4139 #, kde-format msgid "&Label:" msgstr "&Bezeichnung" #: rc.cpp:382 rc.cpp:1229 rc.cpp:2076 rc.cpp:2923 rc.cpp:3770 #, kde-format msgid "describing text" msgstr "Beschreibungstext" #: rc.cpp:385 rc.cpp:1232 rc.cpp:2079 rc.cpp:2926 rc.cpp:3773 #, kde-format msgid "amortisation" msgstr "Amortisation" #: rc.cpp:388 rc.cpp:656 rc.cpp:1235 rc.cpp:1503 rc.cpp:2082 rc.cpp:2350 #: rc.cpp:2929 rc.cpp:3197 rc.cpp:3776 rc.cpp:4056 #, kde-format msgid "&Amount:" msgstr "&Menge:" #: rc.cpp:391 rc.cpp:1238 rc.cpp:2085 rc.cpp:2932 rc.cpp:3779 #, kde-format msgid "amount multiplier" msgstr "Betrags-Multiplikator" #: rc.cpp:394 rc.cpp:1241 rc.cpp:2088 rc.cpp:2935 rc.cpp:3782 #, kde-format msgid "at &Price:" msgstr "zum &Preis von:" #: rc.cpp:397 rc.cpp:659 rc.cpp:1244 rc.cpp:1506 rc.cpp:2091 rc.cpp:2353 #: rc.cpp:2938 rc.cpp:3200 rc.cpp:3785 rc.cpp:4059 #, kde-format msgid "Price for one piece" msgstr "Stückpreis" #: rc.cpp:400 rc.cpp:1247 rc.cpp:2094 rc.cpp:2941 rc.cpp:3788 #, kde-format msgid "€" msgstr "€" #: rc.cpp:403 rc.cpp:1250 rc.cpp:2097 rc.cpp:2944 rc.cpp:3791 #, kde-format msgid "Form" msgstr "Formular" #: rc.cpp:406 rc.cpp:1253 rc.cpp:2100 rc.cpp:2947 rc.cpp:3794 #: tagtemplatesdialog.cpp:58 #, kde-format msgid "Name:" msgstr "Name:" #: rc.cpp:409 rc.cpp:1256 rc.cpp:2103 rc.cpp:2950 rc.cpp:3797 #, kde-format msgid "Organization:" msgstr "Organisation:" #: rc.cpp:412 rc.cpp:1259 rc.cpp:2106 rc.cpp:2953 rc.cpp:3800 #, kde-format msgid "Street:" msgstr "Straße" #: rc.cpp:415 rc.cpp:1262 rc.cpp:2109 rc.cpp:2956 rc.cpp:3803 #, kde-format msgid "Post Code:" msgstr "Postleitzahl:" #: rc.cpp:418 rc.cpp:1265 rc.cpp:2112 rc.cpp:2959 rc.cpp:3806 #, kde-format msgid "City:" msgstr "Ort:" #: rc.cpp:421 rc.cpp:1268 rc.cpp:2115 rc.cpp:2962 rc.cpp:3809 #, kde-format msgid "Phone:" msgstr "Telefon (Arbeit)" #: rc.cpp:424 rc.cpp:1271 rc.cpp:2118 rc.cpp:2965 rc.cpp:3812 #, kde-format msgid "Fax:" msgstr "Fax:" #: rc.cpp:427 rc.cpp:1274 rc.cpp:2121 rc.cpp:2968 rc.cpp:3815 #, kde-format msgid "Mobile Phone:" msgstr "Mobil:" #: rc.cpp:430 rc.cpp:1277 rc.cpp:2124 rc.cpp:2971 rc.cpp:3818 #, kde-format msgid "EMail:" msgstr "EMail:" #: rc.cpp:433 rc.cpp:1280 rc.cpp:2127 rc.cpp:2974 rc.cpp:3821 #, kde-format msgid "Website:" msgstr "Webseite:" #: rc.cpp:436 rc.cpp:1283 rc.cpp:2130 rc.cpp:2977 rc.cpp:3824 #, kde-format msgid "Import Document Items" msgstr "Dokumentposten importieren" #: rc.cpp:439 rc.cpp:1286 rc.cpp:2133 rc.cpp:2980 rc.cpp:3827 #, kde-format msgid "Import information" msgstr "Informationen importieren" #: rc.cpp:442 rc.cpp:1289 rc.cpp:2136 rc.cpp:2983 rc.cpp:3830 #, kde-format msgid "Select a &File to import from:" msgstr "Bitte wählen Sie die zu importierende &Datei:" #: rc.cpp:445 rc.cpp:1292 rc.cpp:2139 rc.cpp:2986 rc.cpp:3833 #, kde-format msgid "FixMe!" msgstr "FixMe!" #: rc.cpp:448 rc.cpp:1295 rc.cpp:2142 rc.cpp:2989 rc.cpp:3836 #, kde-format msgid "Import &Schema:" msgstr "&Schema importieren:" #: rc.cpp:451 rc.cpp:1298 rc.cpp:2145 rc.cpp:2992 rc.cpp:3839 #, kde-format msgid "this is interesting information about the selected schema" msgstr "Dies sind nützliche Informationen über das ausgewählte Schema." #: rc.cpp:454 rc.cpp:1301 rc.cpp:2148 rc.cpp:2995 rc.cpp:3842 #, kde-format msgid "Insert all Items &after" msgstr "Alle Posten einfügen &nach" #: rc.cpp:457 rc.cpp:481 rc.cpp:1304 rc.cpp:1328 rc.cpp:2151 rc.cpp:2175 #: rc.cpp:2998 rc.cpp:3022 rc.cpp:3845 rc.cpp:3869 #, kde-format msgid "Tags" msgstr "Stichwörter" #: rc.cpp:460 rc.cpp:1307 rc.cpp:2154 rc.cpp:3001 rc.cpp:3848 #: templtopositiondialogbase.cpp:35 #, kde-format msgid "Create Item from Template" msgstr "Posten aus Vorlage erstellen" #: rc.cpp:463 rc.cpp:1310 rc.cpp:2157 rc.cpp:3004 rc.cpp:3851 #, kde-format msgid "New Item Text" msgstr "Neuer Posten" #: rc.cpp:466 rc.cpp:1313 rc.cpp:2160 rc.cpp:3007 rc.cpp:3854 #, kde-format msgid "&insert" msgstr "Einfügen" #: rc.cpp:469 rc.cpp:1316 rc.cpp:2163 rc.cpp:3010 rc.cpp:3857 #, kde-format msgid "à" msgstr "à" #: rc.cpp:472 rc.cpp:1319 rc.cpp:2166 rc.cpp:3013 rc.cpp:3860 #, kde-format msgid "&after item" msgstr "&nach" #: rc.cpp:475 rc.cpp:1322 rc.cpp:2169 rc.cpp:3016 rc.cpp:3863 #, kde-format msgid "Keep this item as template for future documents" msgstr "Diesen Posten als Vorlage für zukünftige Dokumente speichern" #: rc.cpp:478 rc.cpp:1325 rc.cpp:2172 rc.cpp:3019 rc.cpp:3866 #, kde-format msgid "save in &chapter" msgstr "in &Kapitel" #: rc.cpp:490 rc.cpp:1337 rc.cpp:2184 rc.cpp:3031 rc.cpp:3872 #, kde-format msgid "Do Database Initialisation" msgstr "Datenbank initialisieren" #: rc.cpp:493 rc.cpp:1340 rc.cpp:2187 rc.cpp:3034 rc.cpp:3875 #, kde-format msgid "Do XML archiving of documents they're printed?" msgstr "XML-Dokumente archivieren, sobald sie gedruckt sind?" #: rc.cpp:496 rc.cpp:1343 rc.cpp:2190 rc.cpp:3037 rc.cpp:3878 #, kde-format msgid "" "Where Kraft stores the XML archive documents. If empty, KDEHOME/share/apps " "is used." msgstr "" "Speicherort für die XML-Archiv-Dokumente. Falls leer, wird " "$KDEHOME/share/apps verwendet." #: rc.cpp:499 rc.cpp:1346 rc.cpp:2193 rc.cpp:3040 rc.cpp:3881 #, kde-format msgid "The local xml document storage path" msgstr "Der lokale Speicherpfad für XML-Dokumente" #: rc.cpp:502 rc.cpp:1349 rc.cpp:2196 rc.cpp:3043 rc.cpp:3884 #, kde-format msgid "Default mail user agent. Set xdg for xdg-email" msgstr "Standard Email-Versende-Tool. Setze xdg für xdg-email" #: rc.cpp:505 rc.cpp:508 rc.cpp:1352 rc.cpp:1355 rc.cpp:2199 rc.cpp:2202 #: rc.cpp:3046 rc.cpp:3049 rc.cpp:3887 rc.cpp:3890 #, kde-format msgid "The default geometry of the document view dialog" msgstr "Standardgröße der Dokumentansicht" #: rc.cpp:511 rc.cpp:1358 rc.cpp:2205 rc.cpp:3052 rc.cpp:3893 #, kde-format msgid "The current state of the portal" msgstr "Der momentane Status des Portals" #: rc.cpp:514 rc.cpp:1361 rc.cpp:2208 rc.cpp:3055 rc.cpp:3896 #, kde-format msgid "The current geometry of the portal" msgstr "Die aktuelle Geometry des Portals" #: rc.cpp:517 rc.cpp:1364 rc.cpp:2211 rc.cpp:3058 rc.cpp:3899 #, kde-format msgid "The current geometry of the new doc assistant" msgstr "Aktuelle Geometry des Dokument-Neu Assistenten" #: rc.cpp:520 rc.cpp:1367 rc.cpp:2214 rc.cpp:3061 rc.cpp:3902 #, kde-format msgid "The splitter position of the document view dialog" msgstr "Teilungsstelle des Dokumentansicht-Dialogs" #: rc.cpp:523 rc.cpp:1370 rc.cpp:2217 rc.cpp:3064 rc.cpp:3905 #, kde-format msgid "The default size of the material catalog view" msgstr "Standardgröße der Material-Katalogs-Ansicht" #: rc.cpp:526 rc.cpp:1373 rc.cpp:2220 rc.cpp:3067 rc.cpp:3908 #, kde-format msgid "The splitter setting for the doc assistant" msgstr "Splitter-Einstellung für den Dokument-Assistenten" #: rc.cpp:529 rc.cpp:1376 rc.cpp:2223 rc.cpp:3070 rc.cpp:3911 #, kde-format msgid "The window size of the template to document dialog for plants" msgstr "Die Fenstergröße des Dialogs „Vorlage zu Dokument für Pflanzen“." #: rc.cpp:532 rc.cpp:1379 rc.cpp:2226 rc.cpp:3073 rc.cpp:3914 #, kde-format msgid "The window size of the template to document dialog" msgstr "Die Fenstergröße des Dialogs „Vorlage zu Dokument“" #: rc.cpp:535 rc.cpp:1382 rc.cpp:2229 rc.cpp:3076 rc.cpp:3917 #, kde-format msgid "The digest list column arrangement for the Latest-list" msgstr "" "Die Anordnung der Übersicht der Listenspalte für die Liste der letzten " "Einträge" #: rc.cpp:538 rc.cpp:1385 rc.cpp:2232 rc.cpp:3079 rc.cpp:3920 #, kde-format msgid "The digest list column arrangement for the all-list" msgstr "" "Die Anordnung der Übersicht der Listenspalte für die Liste aller Einträge" #: rc.cpp:541 rc.cpp:1388 rc.cpp:2235 rc.cpp:3082 rc.cpp:3923 #, kde-format msgid "The digest list column arrangement for timeline" msgstr "Die Anordnung der Übersicht der Listenspalte für die Zeitleiste" #: rc.cpp:544 rc.cpp:1391 rc.cpp:2238 rc.cpp:3085 rc.cpp:3926 #, kde-format msgid "The sizes of the slider in the address picker Widget" msgstr "Die Größe der Schieberegler im Adress-Auswahlfenster" #: rc.cpp:547 rc.cpp:1394 rc.cpp:2241 rc.cpp:3088 rc.cpp:3929 #, kde-format msgid "The state of the treeview inside the address selector widget" msgstr "Der Status der Baumansicht im Address-Auswahlwidget" #: rc.cpp:550 rc.cpp:1397 rc.cpp:2244 rc.cpp:3091 rc.cpp:3932 #, kde-format msgid "Size of the address select dialog" msgstr "Größe des Adressauswahldialoges" #: rc.cpp:553 rc.cpp:1400 rc.cpp:2247 rc.cpp:3094 rc.cpp:3941 #, kde-format msgid "State of the header of the material catalog" msgstr "Standardgröße der Material-Katalogs-Ansicht" #: rc.cpp:556 rc.cpp:1403 rc.cpp:2250 rc.cpp:3097 rc.cpp:3950 #, kde-format msgid "State of the header of the template catalog" msgstr "Status der Kopfzeile des Vorlagenkatalogs" #: rc.cpp:559 rc.cpp:1406 rc.cpp:2253 rc.cpp:3100 rc.cpp:3953 #, kde-format msgid "" "Default percentage the sale price for a material should be higher than its " "purchase price" msgstr "" "Der prozentuale Aufschlag für den VK-Preis eines Materials sollte höher als " "sein EK-Preis sein." #: rc.cpp:562 rc.cpp:1409 rc.cpp:2256 rc.cpp:3103 rc.cpp:3956 #, kde-format msgid "The name of the last selected chapter in the catalog" msgstr "Der Name der zuletzt ausgewählten Kategorie im Katalog." #: rc.cpp:565 rc.cpp:1412 rc.cpp:2259 rc.cpp:3106 rc.cpp:3959 #, kde-format msgid "The complete filename of the trml2pdf binary" msgstr "Vollständiger Pfad zu trml2pdf" #: rc.cpp:568 rc.cpp:1415 rc.cpp:2262 rc.cpp:3109 rc.cpp:3962 #, kde-format msgid "The path to the output directory for document pdfs" msgstr "Pfad zum Ausgabe-Ordner für die Dokument-PDFs" #: rc.cpp:571 rc.cpp:1418 rc.cpp:2265 rc.cpp:3112 rc.cpp:3965 #, kde-format msgid "The last created doc type." msgstr "Typ des zuletzt erstellten Dokuments" #: rc.cpp:574 rc.cpp:1421 rc.cpp:2268 rc.cpp:3115 rc.cpp:3968 #, kde-format msgid "The greeting below on the document footer." msgstr "Der Abschlussgruß im Dokumentfuß." #: rc.cpp:577 rc.cpp:1424 rc.cpp:2271 rc.cpp:3118 rc.cpp:3971 #, kde-format msgid "The salut message on the document header." msgstr "Die Anrede im Kopfbereich des Dokuments." #: rc.cpp:580 rc.cpp:1427 rc.cpp:2274 rc.cpp:3121 rc.cpp:3974 #, kde-format msgid "" "The name of the catalog chapter where to store new templates in by default" msgstr "" "Der Name des Katalogkapitels, in dem neue Vorlagen standardmäßig gespeichert" " werden" #: rc.cpp:583 rc.cpp:1430 rc.cpp:2277 rc.cpp:3124 rc.cpp:3977 #, kde-format msgid "The name of the last used import schema for items." msgstr "Der Name des letzten Eingabeschemas für Posten." #: rc.cpp:586 rc.cpp:1433 rc.cpp:2280 rc.cpp:3127 rc.cpp:3980 #, kde-format msgid "The name of the last used input file for items." msgstr "Der Name der letzten Eingabedatei für Posten." #: rc.cpp:589 rc.cpp:1436 rc.cpp:2283 rc.cpp:3130 rc.cpp:3983 #, kde-format msgid "" "User name as reference to the KAddressbook to identify 'my' address " "(DEPRECATED)." msgstr "" "Benutzername als Verknüpfung zu KAddressbook, um „Meine Adresse“ festzulegen" " (veraltet)." #: rc.cpp:592 rc.cpp:1439 rc.cpp:2286 rc.cpp:3133 rc.cpp:3986 #, kde-format msgid "" "UID of the user as reference to the KAddressbook to identify 'my' address." msgstr "" "Kennung des Benutzers als Verknüpfung zu KAddressbook, um „Meine Adresse“ " "festzulegen." #: rc.cpp:595 rc.cpp:1442 rc.cpp:2289 rc.cpp:3136 rc.cpp:3989 #, kde-format msgid "The doc id template" msgstr "Dokumentennummer-Vorlage" #: rc.cpp:598 rc.cpp:1445 rc.cpp:2292 rc.cpp:3139 rc.cpp:3992 #, kde-format msgid "Localization on document level" msgstr "Lokalisierung auf Dokumentebene" #: rc.cpp:601 rc.cpp:1448 rc.cpp:2295 rc.cpp:3142 rc.cpp:3995 #, kde-format msgid "The tax default for new documents." msgstr "Der standardmäßige Steuersatz für neue Dokumente." #: rc.cpp:604 rc.cpp:1451 rc.cpp:2298 rc.cpp:3145 rc.cpp:3998 #, kde-format msgid "The label for alternative positions" msgstr "Bezeichnung für Alternativposten" #: rc.cpp:607 rc.cpp:610 rc.cpp:1454 rc.cpp:1457 rc.cpp:2301 rc.cpp:2304 #: rc.cpp:3148 rc.cpp:3151 rc.cpp:4001 rc.cpp:4004 #, kde-format msgid "The label for demand positions" msgstr "Bezeichnung für Bedarfsposten" #: rc.cpp:613 rc.cpp:1460 rc.cpp:2307 rc.cpp:3154 rc.cpp:4013 #, kde-format msgid "Edit Material" msgstr "Material bearbeiten" #: rc.cpp:616 rc.cpp:1463 rc.cpp:2310 rc.cpp:3157 rc.cpp:4016 #, kde-format msgid "Store in C&hapter" msgstr "In &Kategorie speichern" #: rc.cpp:622 rc.cpp:1469 rc.cpp:2316 rc.cpp:3163 rc.cpp:4022 #, kde-format msgid "Pac&kaged:" msgstr "Ge&binde:" #: rc.cpp:625 rc.cpp:1472 rc.cpp:2319 rc.cpp:3166 rc.cpp:4025 #, kde-format msgid "per P&ackage" msgstr "pro Ge&binde" #: rc.cpp:628 rc.cpp:1475 rc.cpp:2322 rc.cpp:3169 rc.cpp:4028 #, kde-format msgid "Prices" msgstr "Preise" #: rc.cpp:631 rc.cpp:1478 rc.cpp:2325 rc.cpp:3172 rc.cpp:4031 #, kde-format msgid "= Price of &Sale:" msgstr "= &Verkaufspreis:" #: rc.cpp:634 rc.cpp:1481 rc.cpp:2328 rc.cpp:3175 rc.cpp:4034 #, kde-format msgid "pl&us" msgstr "&zzgl." #: rc.cpp:638 rc.cpp:764 rc.cpp:1485 rc.cpp:1611 rc.cpp:2332 rc.cpp:2458 #: rc.cpp:3179 rc.cpp:3305 rc.cpp:4038 rc.cpp:4164 #, no-c-format, kde-format msgid "%" msgstr " %" #: rc.cpp:641 rc.cpp:1488 rc.cpp:2335 rc.cpp:3182 rc.cpp:4041 #, kde-format msgid "&Purchase Price:" msgstr "&Einkaufspreis:" #: rc.cpp:644 rc.cpp:1491 rc.cpp:2338 rc.cpp:3185 rc.cpp:4044 #, kde-format msgid "Calculation Item Material" msgstr "Materialkostenanteil" #: rc.cpp:647 rc.cpp:1494 rc.cpp:2341 rc.cpp:3188 rc.cpp:4047 #, kde-format msgid "

    Calculation Part 'Material'

    " msgstr "

    Kalkulationsanteil „Material“

    " #: rc.cpp:650 rc.cpp:1497 rc.cpp:2344 rc.cpp:3191 rc.cpp:4050 #, kde-format msgid "Add Material to the template calculation." msgstr "Material zur Kalkulation der Vorlage hinzufügen" #: rc.cpp:653 rc.cpp:1500 rc.cpp:2347 rc.cpp:3194 rc.cpp:4053 #, kde-format msgid "material" msgstr "Material" #: rc.cpp:662 rc.cpp:1509 rc.cpp:2356 rc.cpp:3203 rc.cpp:4062 #, kde-format msgid "unit" msgstr "Einheit" #: rc.cpp:665 rc.cpp:1512 rc.cpp:2359 rc.cpp:3206 rc.cpp:4065 #, kde-format msgid "" "Please enter the MySQL Database server settings. \n" "\n" "For detailed setup instructions for the MySQL to use with Kraft please check the Kraft website." msgstr "" "Bitte bestätigen Sie die Einstellungen der MySQL-Datenbank. \n" "\n" "Für ausführliche Setup Anweisungen, um MySQL mit Kraft zu nutzen besuchen Sie bitte die Kraft Homepage. " #: rc.cpp:670 rc.cpp:1517 rc.cpp:2364 rc.cpp:3211 rc.cpp:4070 #, kde-format msgid "Database Host:" msgstr "Datenbank-Rechner:" #: rc.cpp:673 rc.cpp:1520 rc.cpp:2367 rc.cpp:3214 rc.cpp:4073 #, kde-format msgid "Database Name:" msgstr "Datenbankname:" #: rc.cpp:679 rc.cpp:1526 rc.cpp:2373 rc.cpp:3220 rc.cpp:4079 #, kde-format msgid "Password:" msgstr "Passwort:" #: rc.cpp:685 rc.cpp:1532 rc.cpp:2379 rc.cpp:3226 rc.cpp:4085 #, kde-format msgid "Settings" msgstr "Einstellungen" #: rc.cpp:691 rc.cpp:1538 rc.cpp:2385 rc.cpp:3232 rc.cpp:4091 #, kde-format msgid "

    Edit Number Cycles

    " msgstr "

    Nummernbestimmung bearbeiten

    " #: rc.cpp:694 rc.cpp:1541 rc.cpp:2388 rc.cpp:3235 rc.cpp:4094 #, kde-format msgid "Number Cycle Details" msgstr "Nummernbestimmung" #: rc.cpp:697 rc.cpp:1544 rc.cpp:2391 rc.cpp:3238 rc.cpp:4097 #, kde-format msgid "&Number Cycle:" msgstr "&Nummernbestimmung" #: rc.cpp:700 rc.cpp:1547 rc.cpp:2394 rc.cpp:3241 rc.cpp:4100 #, kde-format msgid "&Counter:" msgstr "&Anfangswert:" #: rc.cpp:706 rc.cpp:1553 rc.cpp:2400 rc.cpp:3247 rc.cpp:4106 #, kde-format msgid "ident &Template:" msgstr "Identifizierungs&vorlage:" #: rc.cpp:712 rc.cpp:1559 rc.cpp:2406 rc.cpp:3253 rc.cpp:4112 #, kde-format msgid "&Select a number cycle and edit the details on the right:" msgstr "" "&Wählen Sie eine Nummernbestimmung aus der Liste und bearbeiten Sie diese " "auf der rechten Seite:" #: rc.cpp:715 rc.cpp:1562 rc.cpp:2409 rc.cpp:3256 rc.cpp:4115 #, kde-format msgid "New Item" msgstr "Neuer Posten" #: rc.cpp:721 rc.cpp:1568 rc.cpp:2415 rc.cpp:3262 rc.cpp:4121 #, kde-format msgid "add" msgstr "Hinzufügen" #: rc.cpp:727 rc.cpp:1574 rc.cpp:2421 rc.cpp:3268 rc.cpp:4127 #, kde-format msgid "remove" msgstr "Entfernen" #: rc.cpp:730 rc.cpp:1577 rc.cpp:2424 rc.cpp:3271 rc.cpp:4130 #, kde-format msgid "Calculation Item Time" msgstr "Zeitkostenanteil" #: rc.cpp:733 rc.cpp:1580 rc.cpp:2427 rc.cpp:3274 rc.cpp:4133 #, kde-format msgid "

    Calculation Part 'Time'

    " msgstr "

    Arbeitszeitverrechnung

    " #: rc.cpp:736 rc.cpp:1583 rc.cpp:2430 rc.cpp:3277 rc.cpp:4136 #, kde-format msgid "" "Calculate time efforts here for one unit of the template.
    Note that the" " costs may depend on a global hourly rate." msgstr "" "Hier den zeitlichen Aufwand für eine Einheit der Vorlage berechnen. " "
    Beachten Sie dabei, dass die Kosten auf einem globalen Stundensatz " "beruhen können." #: rc.cpp:742 rc.cpp:1589 rc.cpp:2436 rc.cpp:3283 rc.cpp:4142 #, kde-format msgid "Work" msgstr "Arbeitsaufwand" #: rc.cpp:745 rc.cpp:1592 rc.cpp:2439 rc.cpp:3286 rc.cpp:4145 #, kde-format msgid "&Time Effort:" msgstr "&Zeitaufwand:" #: rc.cpp:748 rc.cpp:1595 rc.cpp:2442 rc.cpp:3289 rc.cpp:4148 #, kde-format msgid "&Hourly Rate:" msgstr "&Stundensatz:" #: rc.cpp:751 rc.cpp:1598 rc.cpp:2445 rc.cpp:3292 rc.cpp:4151 #, kde-format msgid "Apply the &global hourly rate" msgstr "Globalen Stundensatz anwenden" #: rc.cpp:754 rc.cpp:1601 rc.cpp:2448 rc.cpp:3295 rc.cpp:4154 #, kde-format msgid "1." msgstr "1." #: rc.cpp:757 rc.cpp:760 rc.cpp:1604 rc.cpp:1607 rc.cpp:2451 rc.cpp:2454 #: rc.cpp:3298 rc.cpp:3301 rc.cpp:4157 rc.cpp:4160 #, kde-format msgid "D" msgstr "D" #: rc.cpp:767 rc.cpp:1614 rc.cpp:2461 rc.cpp:3308 rc.cpp:4167 #, kde-format msgid "of the sum of" msgstr "der Summe von" #: rc.cpp:770 rc.cpp:1617 rc.cpp:2464 rc.cpp:3311 rc.cpp:4170 #, kde-format msgid "" "Please enter the SQLite Database Settings.\n" "\n" "Pick a filename to name the SQLite database file or leave the default setting." msgstr "" "Bitte bestätigen Sie die SQLite-Datenbank-Einstellungen.\n" "\n" "Wählen Sie einen Dateinamen, um die SQLite-Datenbank-Datei zu benennen, oder übernehmen Sie die Voreinstellung. " #: rc.cpp:775 rc.cpp:1622 rc.cpp:2469 rc.cpp:3316 rc.cpp:4175 #, kde-format msgid "store the database file at default place." msgstr "Speichern der Datenbank-Datei am voreingestellten Ort." #: rc.cpp:778 rc.cpp:1625 rc.cpp:2472 rc.cpp:3319 rc.cpp:4178 #, kde-format msgid "select a file name:" msgstr "Dateinamen auswählen:" #: rc.cpp:781 rc.cpp:1628 rc.cpp:2475 rc.cpp:3322 rc.cpp:4181 #, kde-format msgid "

    Add a Tax Rate

    " msgstr "

    Steuersatz hinzufügen

    " #: rc.cpp:784 rc.cpp:1631 rc.cpp:2478 rc.cpp:3325 rc.cpp:4184 #, kde-format msgid "Start-Date:" msgstr "Anfangsdatum:" #: rc.cpp:787 rc.cpp:1634 rc.cpp:2481 rc.cpp:3328 rc.cpp:4187 #, kde-format msgid "&Reduced Tax Rate:" msgstr "&Reduzierter Steuersatz:" #: rc.cpp:790 rc.cpp:1637 rc.cpp:2484 rc.cpp:3331 rc.cpp:4190 #, kde-format msgid "&Full Tax Rate:" msgstr "&Allgemeiner Steuersatz:" #: rc.cpp:793 rc.cpp:1640 rc.cpp:2487 rc.cpp:3334 rc.cpp:4193 #, kde-format msgid "Edit Document Text Template" msgstr "Dokumenten-Textvorlage bearbeiten" #: rc.cpp:796 rc.cpp:1643 rc.cpp:2490 rc.cpp:3337 rc.cpp:4196 #, kde-format msgid "&Name:" msgstr "&Name:" #: rc.cpp:799 rc.cpp:1646 rc.cpp:2493 rc.cpp:3340 rc.cpp:4199 #, kde-format msgid "displayed as" msgstr "angezeigt als" #: rc.cpp:802 rc.cpp:1649 rc.cpp:2496 rc.cpp:3343 rc.cpp:4202 #, kde-format msgid "in doc type" msgstr "im Dokumenttyp" #: rc.cpp:805 rc.cpp:1652 rc.cpp:2499 rc.cpp:3346 rc.cpp:4205 #, kde-format msgid "&Text:" msgstr "&Text:" #: rc.cpp:808 rc.cpp:1655 rc.cpp:2502 rc.cpp:3349 rc.cpp:4208 #, kde-format msgid "

    Add a unit

    " msgstr "

    Einheit hinzufügen

    " #: rc.cpp:811 rc.cpp:1658 rc.cpp:2505 rc.cpp:3352 rc.cpp:4211 #, kde-format msgid "Unit short" msgstr "Einheit (kurz)" #: rc.cpp:814 rc.cpp:1661 rc.cpp:2508 rc.cpp:3355 rc.cpp:4214 #, kde-format msgid "Unit long" msgstr "Einheit (ausführlich)" #: rc.cpp:817 rc.cpp:1664 rc.cpp:2511 rc.cpp:3358 rc.cpp:4217 #, kde-format msgid "Unit plural short" msgstr "Einheiten-Mehrzahl (kurz)" #: rc.cpp:820 rc.cpp:1667 rc.cpp:2514 rc.cpp:3361 rc.cpp:4220 #, kde-format msgid "Unit plural long" msgstr "Einheiten-Mehrzahl (ausführlich)" #: rc.cpp:823 rc.cpp:1670 rc.cpp:2517 rc.cpp:3364 rc.cpp:4223 #, kde-format msgid "" "This step checks if the database schema version is sufficient for this version of Kraft. \n" "\n" "In case it is not, the schema is updated automatically.\n" msgstr "" "Dieser Schritt überprüft, ob die Datenbankschema-Version für diese Version von Kraft ausreicht.\n" "\n" "Wenn sie nicht ausreicht, wird das Schema automatisch aktualisiert.\n" #: rc.cpp:838 rc.cpp:1685 rc.cpp:2532 rc.cpp:3379 rc.cpp:4238 #, kde-format msgid "Upgrade not yet started" msgstr "Die Aktualisierung wurde noch nicht eingeleitet." #: rc.cpp:841 rc.cpp:1688 rc.cpp:2535 rc.cpp:3382 rc.cpp:4241 #, kde-format msgid "

    Add a Wage group

    " msgstr "

    Lohngruppe hinzufügen

    " #: rc.cpp:844 rc.cpp:1691 rc.cpp:2538 rc.cpp:3385 rc.cpp:4244 #, kde-format msgid "Group name" msgstr "Gruppenname" #: rc.cpp:847 rc.cpp:1694 rc.cpp:2541 rc.cpp:3388 rc.cpp:4247 #, kde-format msgid "Wage" msgstr "Arbeitslohn" #: rc.cpp:3935 #, kde-format msgid "State of the window of the material catalog" msgstr "Status des Materialkatalogfensters" #: rc.cpp:3938 #, kde-format msgid "Geometry of the material catalog" msgstr "Geometrie des Materialkatalogfensters" #: rc.cpp:3944 #, kde-format msgid "State of the window of the template catalog" msgstr "Status des Katalog-Fensters" #: rc.cpp:3947 #, kde-format msgid "Geometry the template catalog" msgstr "Geometrie des Katalog-Fensters" #: tagtemplatesdialog.cpp:47 #, kde-format msgid "Edit Tag Template" msgstr "Stichwort-Vorlage bearbeiten" #: tagtemplatesdialog.cpp:54 #, kde-format msgid "Edit a Tag Template" msgstr "Marker-Vorlage bearbeiten" #: tagtemplatesdialog.cpp:55 #, kde-format msgid "Adjust settings for name, color and description." msgstr "Legen Sie einen Namen, eine Farbe und eine Beschreibung fest." #: tagtemplatesdialog.cpp:63 #, kde-format msgid "Description:" msgstr "Beschreibung:" #: tagtemplatesdialog.cpp:69 #, kde-format msgid "Associated Color:" msgstr "Zugehörige Farbe:" #: tagtemplatesdialog.cpp:141 #, kde-format msgid "Add, edit and remove tag templates for use in the documents." msgstr "" "Stichwort-Vorlagen hinzufügen, ändern oder entfernen, die in diesen " "Dokumenten verwendet werden." #: tagtemplatesdialog.cpp:165 #, kde-format msgid "Add..." msgstr "Hinzufügen ..." #: tagtemplatesdialog.cpp:167 #, kde-format msgid "Edit..." msgstr "Bearbeiten ..." #: tagtemplatesdialog.cpp:170 #, kde-format msgid "Delete..." msgstr "Löschen ..." #: tagtemplatesdialog.cpp:223 #, kde-format msgid "Do you really want to delete the template?" msgstr "Möchten Sie die ausgewählte Vorlage wirklich löschen?" #: taxeditdialog.cpp:36 #, kde-format msgid "Edit Tax Rates" msgstr "Steuersätze bearbeiten" #: main.cpp:50 #, kde-format msgid "Open document with doc number " msgstr "Dokumenten mit der Nummer öffnen" #: templtopositiondialogbase.cpp:51 #, kde-format msgid "the Header of the Document as first item" msgstr "als ersten Posten" #: texteditdialog.cpp:42 #, kde-format msgid "Edit Text Templates" msgstr "Textvorlagen bearbeiten" #: texteditdialog.cpp:62 #, kde-format msgid "Edit %1 Template" msgstr "Vorlage „%1“ bearbeiten" #: timecalcpart.cpp:82 #, kde-format msgid "Minutes" msgstr "Minuten" #: timecalcpart.cpp:84 #, kde-format msgid "Hours" msgstr "Stunden" #: timecalcpart.cpp:86 #, kde-format msgid "Seconds" msgstr "Sekunden" #: positionviewwidget.cpp:89 #, kde-format msgid "Item Actions" msgstr "Postenaktionen" #: positionviewwidget.cpp:92 #, kde-format msgid "Item Kind" msgstr "Postenart" #: positionviewwidget.cpp:93 positionviewwidget.cpp:676 #, kde-format msgid "Normal" msgstr "Normal" #: positionviewwidget.cpp:95 positionviewwidget.cpp:684 #, kde-format msgid "Alternative" msgstr "Alternative" #: positionviewwidget.cpp:97 #, kde-format msgid "On Demand" msgstr "Bei Bedarf" #: positionviewwidget.cpp:105 #, kde-format msgid "Taxfree Item" msgstr "Steuerfreier Posten" #: positionviewwidget.cpp:111 #, kde-format msgid "Reduced Tax" msgstr "Reduzierter Steuersatz" #: positionviewwidget.cpp:117 #, kde-format msgid "Full Tax" msgstr "Allgemeiner Steuersatz" #: positionviewwidget.cpp:126 #, kde-format msgid "Move Up" msgstr "Nach oben" #: positionviewwidget.cpp:128 #, kde-format msgid "Move Down" msgstr "Nach unten" #: positionviewwidget.cpp:130 #, kde-format msgid "Lock Item" msgstr "Posten sperren" #: positionviewwidget.cpp:132 #, kde-format msgid "Unlock Item" msgstr "Posten entsperren" #: positionviewwidget.cpp:134 #, kde-format msgid "Delete Item" msgstr "Posten löschen" #: positionviewwidget.cpp:218 #, kde-format msgid "All items" msgstr "Alle Posten" #: positionviewwidget.cpp:228 #, kde-format msgid "%1-tagged items" msgstr "Mit „%1“ markierte Posten" #: positionviewwidget.cpp:260 #, kde-format msgid "Tag: %1" msgstr "Markierung: %1" #: positionviewwidget.cpp:262 #, kde-format msgid "Tags: