├── .gitattributes ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── _config.yml ├── i-u-b ├── backup.md ├── bench.md ├── git.md ├── install-dev.md ├── install-trouble.md ├── install.md ├── nginx.md ├── restore.md ├── revert.md ├── software.md ├── upgrade-trouble.md └── upgrade.md ├── introduction ├── help.md └── overview.md ├── preface ├── audience.md ├── foreword.md ├── prerequisites.md └── typography.md ├── reporting ├── install-bi-dev.md ├── install-bi.md ├── introduction.md └── types.md └── setup ├── domains.md └── setup.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | *.md.html 19 | 20 | # External tool builders 21 | .externalToolBuilders/ 22 | 23 | # Locally stored "Eclipse launch configurations" 24 | *.launch 25 | 26 | # CDT-specific 27 | .cproject 28 | 29 | # PDT-specific 30 | .buildpath 31 | 32 | 33 | ################# 34 | ## Visual Studio 35 | ################# 36 | 37 | ## Ignore Visual Studio temporary files, build results, and 38 | ## files generated by popular Visual Studio add-ons. 39 | 40 | # User-specific files 41 | *.suo 42 | *.user 43 | *.sln.docstates 44 | 45 | # Build results 46 | 47 | [Dd]ebug/ 48 | [Rr]elease/ 49 | x64/ 50 | build/ 51 | [Bb]in/ 52 | [Oo]bj/ 53 | 54 | # MSTest test Results 55 | [Tt]est[Rr]esult*/ 56 | [Bb]uild[Ll]og.* 57 | 58 | *_i.c 59 | *_p.c 60 | *.ilk 61 | *.meta 62 | *.obj 63 | *.pch 64 | *.pdb 65 | *.pgc 66 | *.pgd 67 | *.rsp 68 | *.sbr 69 | *.tlb 70 | *.tli 71 | *.tlh 72 | *.tmp 73 | *.tmp_proj 74 | *.log 75 | *.vspscc 76 | *.vssscc 77 | .builds 78 | *.pidb 79 | *.log 80 | *.scc 81 | 82 | # Visual C++ cache files 83 | ipch/ 84 | *.aps 85 | *.ncb 86 | *.opensdf 87 | *.sdf 88 | *.cachefile 89 | 90 | # Visual Studio profiler 91 | *.psess 92 | *.vsp 93 | *.vspx 94 | 95 | # Guidance Automation Toolkit 96 | *.gpState 97 | 98 | # ReSharper is a .NET coding add-in 99 | _ReSharper*/ 100 | *.[Rr]e[Ss]harper 101 | 102 | # TeamCity is a build add-in 103 | _TeamCity* 104 | 105 | # DotCover is a Code Coverage Tool 106 | *.dotCover 107 | 108 | # NCrunch 109 | *.ncrunch* 110 | .*crunch*.local.xml 111 | 112 | # Installshield output folder 113 | [Ee]xpress/ 114 | 115 | # DocProject is a documentation generator add-in 116 | DocProject/buildhelp/ 117 | DocProject/Help/*.HxT 118 | DocProject/Help/*.HxC 119 | DocProject/Help/*.hhc 120 | DocProject/Help/*.hhk 121 | DocProject/Help/*.hhp 122 | DocProject/Help/Html2 123 | DocProject/Help/html 124 | 125 | # Click-Once directory 126 | publish/ 127 | 128 | # Publish Web Output 129 | *.Publish.xml 130 | *.pubxml 131 | *.publishproj 132 | 133 | # NuGet Packages Directory 134 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 135 | #packages/ 136 | 137 | # Windows Azure Build Output 138 | csx 139 | *.build.csdef 140 | 141 | # Windows Store app package directory 142 | AppPackages/ 143 | 144 | # Others 145 | sql/ 146 | *.Cache 147 | ClientBin/ 148 | [Ss]tyle[Cc]op.* 149 | ~$* 150 | *~ 151 | *.dbmdl 152 | *.[Pp]ublish.xml 153 | *.pfx 154 | *.publishsettings 155 | 156 | # RIA/Silverlight projects 157 | Generated_Code/ 158 | 159 | # Backup & report files from converting an old project file to a newer 160 | # Visual Studio version. Backup files are not needed, because we have git ;-) 161 | _UpgradeReport_Files/ 162 | Backup*/ 163 | UpgradeLog*.XML 164 | UpgradeLog*.htm 165 | 166 | # SQL Server files 167 | App_Data/*.mdf 168 | App_Data/*.ldf 169 | 170 | ############# 171 | ## Windows detritus 172 | ############# 173 | 174 | # Windows image file caches 175 | Thumbs.db 176 | ehthumbs.db 177 | 178 | # Folder config file 179 | Desktop.ini 180 | 181 | # Recycle Bin used on file shares 182 | $RECYCLE.BIN/ 183 | 184 | # Mac crap 185 | .DS_Store 186 | 187 | 188 | ############# 189 | ## Python 190 | ############# 191 | 192 | *.py[cod] 193 | 194 | # Packages 195 | *.egg 196 | *.egg-info 197 | dist/ 198 | build/ 199 | eggs/ 200 | parts/ 201 | var/ 202 | sdist/ 203 | develop-eggs/ 204 | .installed.cfg 205 | 206 | # Installer logs 207 | pip-log.txt 208 | 209 | # Unit test / coverage reports 210 | .coverage 211 | .tox 212 | 213 | #Translations 214 | *.mo 215 | 216 | #Mr Developer 217 | .mr.developer.cfg 218 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at jwrober at gmail dot com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | * All updates must be in [GitHub Markdown](https://guides.github.com/features/mastering-markdown/). 2 | * Very few images! This is a technical manual, not a user manual. 3 | * Follow the formats in section 1.4 Typography. 4 | * Author in US English, not Queen's English. 5 | * When working on a task: 6 | 1. Take ownership of an issue or create one to track your effort. 7 | 1. Create a branch in your personal fork for the issue(s). 8 | 1. Create a pull request from the issue branch in your fork to develop branch in this repo. 9 | * In the pull request comments, place notes on what issue(s) you worked on and what changed 10 | * PM me at https://discuss.erpnext.com/ if you want to contribute. 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Readme / Index 2 | 3 | This is the ERPNext Administrator's Guide. All content in this guide is generated in markdown (MD) language. The purpose of this guide is to provide self-hosters of the [ERPNext](https://erpnext.org "ERPNext Website") system a place to capture tips and tricks on administering this complex platform. 4 | 5 | If you would like to contribute to the maintenance of this guide, please PM me from the [ERPNext Discussion Forum](https://discuss.erpnext.com/) to get added to the repo. I go by the handle `james_robertson` there. Please read the [Contributing Guidelines](CONTRIBUTING). 6 | 7 | ![GPLv3 Logo](https://www.gnu.org/graphics/gplv3-127x51.png)
8 | This work is licensed under the GNU GENERAL PUBLIC LICENSE v3. Same as [ERPNext](https://github.com/frappe/erpnext "ERPNext GitHub Repo"). 9 | 10 | Read this guide online at 11 | 12 | The GitHub repository is at 13 | 14 | Next: [1.1 Foreword](preface/foreword "Foreword") 15 | 16 | ## Table of Contents 17 | 18 | * 1 Preface 19 | * 1.1 [Foreword](preface/foreword "Foreword") 20 | * 1.2 [Audience](preface/audience "Audience") 21 | * 1.3 [Prerequisites](preface/prerequisites "Prereguisites") 22 | * 1.4 [Typography](preface/typography "Typography") 23 | * 2 Introduction 24 | * 2.1 [Overview of ERPNext](introduction/overview "Overview of ERPNext") 25 | * 2.2 [Getting Help](introduction/help "Getting Help") 26 | * 3 ERPNext Installation, Upgrades, and Backups (I-U-B) 27 | * 3.1 [Frappe Bench](i-u-b/bench) 28 | * 3.1.1 [Operating Envrionment](i-u-b/bench#OpEnv) 29 | * 3.1.2 [Frappe Bench Commands](i-u-b/bench#Cmd) 30 | * 3.1.3 [The Wonderful World of git](i-u-b/git) 31 | * 3.1.4 [The Wonderful World of nginx](i-u-b/nginx) 32 | * 3.1.5 [Software Packages Installed](i-u-b/software) 33 | * 3.2 [Installing ERPNext](i-u-b/install) 34 | * 3.2.1 [Installation Troubleshooting](i-u-b/install-trouble) 35 | * 3.2.2 [Installation of a Side by Side Development Environment](i-u-b/install-dev) 36 | * 3.3 [Upgrading ERPNext](i-u-b/upgrade) 37 | * 3.3.1 [Upgrading from one Major Version to Another](i-u-b/upgrade#Major) 38 | * 3.3.2 [Upgrading from one Minor Version to Another](i-u-b/upgrade#Minor) 39 | * 3.3.3 [Reverting to an older version](i-u-b/revert) 40 | * 3.3.4 [Upgrade Troubleshooting](i-u-b/upgrade-trouble) 41 | * 3.4 [Backing Up ERPNext](i-u-b/backup) 42 | * 3.5 [Restoring from a Previous Backup](i-u-b/restore) 43 | * 4 Setup 44 | * 4.1 [The Setup Wizard](setup/setup) 45 | * 4.2 [Domans](setup/domains) 46 | * 5 Explore > Setup > Users 47 | * 5.1 User 48 | * 5.2 Role 49 | * 5.3 Role Profile 50 | * 5.x Future Placements 51 | * 5.20 User Procedures 52 | * 5.20.1 Setup a System User 53 | * 5.20.2 Setup a Website User 54 | * 5.21 User Recipes 55 | * 5.22 User Troubleshooting 56 | * 6 Explore > Setup > Permissions 57 | * 6.1 Role Permissions Manager 58 | * 6.2 Show / Hide Modules 59 | * 6.3 Role Permission for Page and Report 60 | * 6.4 Permitted Documents for User 61 | * 6.5 Document Share Report 62 | * 6.x Future Placements 63 | * 6.20 Permissions Procedures 64 | * 6.21 Permissions Recipes 65 | * 6.22 Permissions Troubleshooting 66 | * 7 Explore > Setup > Settings 67 | * 7.1 System Settings 68 | * 7.2 Error Log 69 | * 7.3 Domain Settings 70 | * 7.4 Global Settings 71 | * 8 Explore > Setup > Data 72 | * 8.1 Import / Export Data 73 | * 8.2 Naming Series 74 | * 8.3 Bulk Rename 75 | * 8.4 Bulk Update 76 | * 8.5 Download Backups 77 | * 8.6 Deleted Documents 78 | * 8.x Future Placements 79 | * 8.20 Data Procedures 80 | * 8.21 Data Recipes 81 | * 8.22 Data Troubleshooting 82 | * 9 Explore > Setup > Email 83 | * 9.1 Email Account 84 | * 9.2 Email Domain 85 | * 9.3 Email Alert 86 | * 9.4 Standard Reply 87 | * 9.5 Auto Email Report 88 | * 9.6 Feedback Trigger 89 | * 9.7 Email Digest 90 | * 9.8 SMS Setings 91 | * 9.x Future Placements 92 | * 9.20 Email Procedures 93 | * 9.21 Email Recipes 94 | * 9.22 Email Troubleshooting 95 | * 10 Explore > Setup > Printing 96 | * 10.1 Print Format Builder 97 | * 10.2 Print Settings 98 | * 10.3 Print Format 99 | * 10.4 Print Style 100 | * 10.5 Letter Head 101 | * 10.6 Print Heading 102 | * 10.7 Address Template 103 | * 10.8 Terms and Conditions 104 | * 10.x Future Placements 105 | * 10.20 Printing Procedures 106 | * 10.21 Printing Recipes 107 | * 10.22 Printing Troubleshooting 108 | * 11 Explore > Setup > Workflow 109 | * 11.1 Workflow 110 | * 11.2 Workflow State 111 | * 11.3 Workflow Action 112 | * 11.x Future Placements 113 | * 11.20 Workflow Procedures 114 | * 11.21 Workflow Recipes 115 | * 11.22 Workflow Troubleshooting 116 | * 12 Explore > Setup > Customize 117 | * 12.1 Customize Form 118 | * 12.2 Custom Field 119 | * 12.3 Custom Translations 120 | * 12.4 Custom Script 121 | * 12.5 DocType 122 | * 12.6 Custom Tags 123 | * 12.7 Authorization Rule 124 | * 12.8 Email Notifications 125 | * 12.x Future Placements 126 | * 12.20 Customize Procedures 127 | * 12.21 Customize Recipes 128 | * 12.22 Customize Troubleshooting 129 | * 13 Explore > Setup > Applications 130 | * 13.1 Application Installer 131 | * 14 Explore > Setup > Website 132 | * 14.1 Website Settings 133 | * 14.2 Website Theme 134 | * 14.3 Website Script 135 | * 14.4 About Us Settings 136 | * 14.5 Contact Us Settings 137 | * 14.x Future Placements 138 | * 14.20 Website Procedures 139 | * 14.21 Website Recipes 140 | * 14.22 Website Troubleshooting 141 | * 15 Explore > Setup > Accounts 142 | * 15.1 Accounts Settings 143 | * 15.2 Fiscal Year 144 | * 15.3 Currency 145 | * 15.4 Currency Exchange 146 | * 15.5 Payment Gateway Account 147 | * 15.6 POS Settings 148 | * 15.7 Point-of-Sale Profile 149 | * 15.8 Terms and Conditions Template 150 | * 15.9 Mode of Payment 151 | * 15.x Future Placements 152 | * 15.20 Accounts Procedures 153 | * 15.21 Accounts Recipes 154 | * 15.22 Accounts Troubleshooting 155 | * 16 Explore > Setup > Stock 156 | * 16.1 Stock Settings 157 | * 16.2 Warehouse 158 | * 16.3 Unit of Measure 159 | * 16.4 Item Attribute 160 | * 16.5 Brand 161 | * 16.6 Item Variant Settings 162 | * 16.x Future Placements 163 | * 16.20 Stock Procedures 164 | * 16.21 Stock Recipes 165 | * 16.22 Stock Troubleshooting 166 | * 17 Explore > Setup > Selling 167 | * 17.1 Selling Settings 168 | * 17.2 Campaign 169 | * 17.3 Terms and Conditions Template 170 | * 17.4 Sales Taxes and Charges Template 171 | * 17.5 Industry Type 172 | * 17.x Future Placements 173 | * 17.20 Selling Procedures 174 | * 17.21 Selling Recipes 175 | * 17.22 Selling Troubleshooting 176 | * 18 Explore > Setup > Buying 177 | * 18.1 Buying Settings 178 | * 18.2 Terms and Conditions Template 179 | * 18.3 Purchase Taxes and Charges Template 180 | * 18.x Future Placements 181 | * 18.20 Buying Procedures 182 | * 18.21 Buying Recipes 183 | * 18.22 Buying Troubleshooting 184 | * 19 Explore > Setup > Human Resources 185 | * 19.1 HR Settings 186 | * 19.2 Employment Type 187 | * 19.3 Branch 188 | * 19.4 Department 189 | * 19.5 Designation 190 | * 19.6 Daily Work Summary Settings 191 | * 19.x Future Placements 192 | * 19.20 Human Resources Procedures 193 | * 19.21 Human Resources Recipes 194 | * 19.22 Human Resources Troubleshooting 195 | * 20 Explore > Integrations 196 | * 20.1 Payments 197 | * 20.1.1 Stripe Settings 198 | * 20.1.2 PayPal Settings 199 | * 20.1.3 Razorpay Settings 200 | * 20.2 Backup 201 | * 20.2.1 Dropbox Settings 202 | * 20.2.2 S3 Backup Settings 203 | * 20.3 Authentication 204 | * 20.3.1 Social Login Keys 205 | * 20.3.2 LDAP Settings 206 | * 20.3.3 OAuth Client 207 | * 20.3.4 OAuth Provider Settings 208 | * 20.4 External Documents 209 | * 20.4.1 GSuite Settings 210 | * 20.4.2 GSuite Templates 211 | * 20.4.3 Webhook 212 | * 20.5 Maps 213 | * 20.5.1 Google Maps 214 | * 21 Reporting 215 | * [21.1 Introduction](reporting/introduction "Reporting Introduction") 216 | * [21.2 Types of Reporting](reporting/types "Types of Reporting") 217 | * [21.2.1 Internal Report Builder Reports](reporting/types#rb "Internal Report Builder Reports") 218 | * [21.3 Installation of External BI Engine](reporting/install-bi "Installation of External Reporting Engine") 219 | * [21.4 Installation of BI Development Environment](reporting/install-bi-dev "Installation of BI Dev Environment") 220 | 221 | Now that you have read to the bottom of the current table of contents, you will notice that there are no entries for the following modules: 222 | 223 | * Accounts 224 | * Agriculture 225 | * Assets 226 | * Buying 227 | * CRM 228 | * Contacts 229 | * Education 230 | * Health Care 231 | * Human Resources 232 | * Maintenance 233 | * Manufacturing 234 | * Non Profit 235 | * Projects 236 | * Selling 237 | * Stock 238 | * Support 239 | * Tools 240 | * Website 241 | 242 | We will work on those at a future date! As you can see, there is a lot to fill in yet.

243 | 244 | Next: [1.1 Foreword](preface/foreword "Foreword") 245 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /i-u-b/backup.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.3.4 Upgrade Troubleshooting](upgrade-trouble "Upgrade Troubleshooting") | Next: [3.5 Restoring from a Previous Backup](restore "Restoring from a Previous Backup") 2 | 3 | ## 3.4 Backing Up ERPNext 4 | 5 | Backing up ERPNext is pretty simple. There are two kinds of backups from the admin guide's perspective. A simple backup and a full backup. Let me explain. 6 | 7 |   8 | ### 3.4.1 Simple Backup 9 | 10 | A simple backup just backs up the database and files into `tar` files. To accomplish this, simply run `bench backup` like this: 11 | 12 | sudo su - erpnext 13 | cd [bench name] 14 | bench backup --with files 15 | 16 | `bench backup` will create a `tar.gz` file of the database and `tar` files of the public and private files in the `sites/[site name]/private/backups/` directory on the server. For example: 17 | 18 | [yyyymmdd]_[hhmmss]-[site name]-database.sql.gz 19 | [yyyymmdd]_[hhmmss]-[site name]-files.tar 20 | [yyyymmdd]_[hhmmss]-[site name]-private-files.tar 21 | 22 |   23 | ### 3.4.2 Full Backup 24 | 25 | There is another level of backup that is not really discussed in the [Discussion Forums](https://discuss.erpnext.com/ "ERPNext Discussion Forums") and is what the admin guide calls a **full backup**. The simple backup does not do anything with the code. There is no mechanism to revert to an older code base once `bench update` has been run. So when [Upgrading](upgrade "Upgrading ERPNext"), make sure to take a full backup like this: 26 | 27 | sudo su - erpnext 28 | # you should be in the root of the erpnext user home directory 29 | # take a full backup of the whole system 30 | tar -acvf erpnext-prd-backup-[yyyy-mm-dd].tar.bz2 [bench name]/* 31 | 32 | This will create a `tar.bz2` file in the `/home/erpnext/` directory. You can then follow the steps in [3.3.3 Reverting to an Older Version](revert "Reverting to an Older Version") to get back to a known good state.

33 | 34 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.3.4 Upgrade Troubleshooting](upgrade-trouble "Upgrade Troubleshooting") | Next: [3.5 Restoring from a Previous Backup](restore "Restoring from a Previous Backup") 35 | -------------------------------------------------------------------------------- /i-u-b/bench.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [2.2 Getting Help](../introduction/help "Getting Help") | Next: [3.1.3 Wonderful World of git](git "The Wonderful World of git") 2 | 3 | # 3.0 ERPNext Installation, Upgrades and Backups 4 | 5 | ## 3.1 Frappe Bench 6 | 7 | Frappe `bench` is more than a program written in python. It is a workhorse that an administrator uses to manage a large amount of low level tasks for administrating ERPNext. Frappe `bench` is the first thing [installed](install "Installing ERPNext") besides the base dependencies and is the first tool an administrator will go to when doing work with an ERPNext installation outside of the user interface. 8 | 9 | ERPNext should be [installed](install "Installing ERPNext") in a user directory on the Linux server and will run as that user. During installation this user should have `sudoer` rights, however after installation and in runtime in production environments this user should be unprivileged and should **not** have `sudoer` rights. The user must **not** be `root` either. 10 | 11 | Best practice is to logon to the server with a regular user that has `sudoer` rights. Don't logon as `root`. Use the `sudo` command to do any privileged work on the server. When working with `bench`, logon with the regular user and `su` to the `erpnext` user like this: 12 | 13 | sudo su - erpnext 14 | cd [bench name]/ 15 | 16 | **NOTE**: Using the dash ` - ` in the command, tells `su` that you want a login shell. This simulates the administrator logging into the server as that user and loads a full environment for you. 17 | 18 |   19 | ### 3.1.1 Frappe Bench Operating Environment 20 | 21 | Once you have logged on to the server and become the `erpnext` user, you are ready to get to work with `bench`. During [installation](install "Installing ERPNext"), bench will create the following directory structure: 22 | 23 | * **apps** -- The code is downloaded from GitHub to here 24 | * **erpnext** 25 | * **frappe** 26 | * **[other installed apps]** 27 | * **archive** -- Archived backups 28 | * **archived_sites** -- Archived Sites 29 | * **config** -- Various configuration files 30 | * **pids** -- Process ID Files 31 | * **env** -- The `bench` operating environment 32 | * **bin** -- `python` executables and scripts 33 | * **include** -- Links to python includes 34 | * **lib** -- Python libraries 35 | * **local** -- Python local 36 | * **selenium** -- Web [browser automation](http://www.seleniumhq.org/ "Selenium Website") tool 37 | * **share** -- `man` pages 38 | * **src** -- Other utilities like `mysqlclient` and `pdfkit`. 39 | * **logs** -- Various log files. 40 | * **node_modules** -- ERPNext uses a collection of `NodeJS` modules. The are installed here. 41 | * **sites** -- The top level directory for all sites on the installation. `bench` can manage multiple sites in one environment. If you are running in a multi-tenant environment you will see more than one [site name] directory. 42 | * **[site name]** -- The name of the site. Usually is the same as the URI for the site. 43 | * **error-snapshots** 44 | * **locks** 45 | * **private** -- Private file attachments to various documents inside the user interface are stored on the filesystem here. 46 | * **backups** -- Backups for the site are stored here. See [3.4 Backups](backup "Backing up ERPNext") 47 | * **public** -- Public file attachments to various documents inside the user interface are stored on the filesystem here. 48 | * **task-logs** 49 | 50 |   51 | ### 3.1.2 Frappe Bench Commands 52 | 53 | Administrators need to be comfortable with the frappe `bench` command structure. 54 | 55 | There is a [cheat sheet](https://frappe.io/docs/user/en/bench/resources/bench-commands-cheatsheet "Frappe Bench Commands Cheetsheet") available that is a good start.

56 | 57 | Home: [Table of Contents](../ "Table of Contents") | Previous: [2.2 Getting Help](../introduction/help "Getting Help") | Next: [3.1.3 Wonderful World of git](git "The Wonderful World of git") 58 | -------------------------------------------------------------------------------- /i-u-b/git.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3 Frappe Bench](bench "Frappe Bench") | Next: [3.1.4 Wonderful World of nginx](nginx "The Wonderful World of nginx") 2 | 3 | ### 3.1.3 The Wonderful World of git 4 | 5 | `git` is a software code revision/version control system. The popular GitHub website hosts `git` repositories online for projects such as ERPNext and this administrators guide to reside in. Administrators for companies that want to host their own repositories can do so, especially those that do not want their code public. 6 | 7 | As mentioned before, ERPNext is hosted in an GitHub repository at [https://github.com/frappe/erpnext](https://github.com/frappe/erpnext "ERPNext GitHub Repo"). The Frappe `bench` system will download the ERPNext repository and others as needed with a `clone ` operation. The `bench update` command, re-downloads the latest code and upgrades ERPNext to the most current version. See [3.3 Upgrading ERPNext](upgrade "Upgrading ERPNext"). 8 | 9 | An administrator needs to be comfortable with `git` as there are going to be instances where the code needs to be reverted or otherwise edited. Developers of ERPNext will certainly need to be proficient in `git` so that they can contribute to the project or write custom modules. 10 | 11 | Here are some places to go gain some knowledge on `git`: 12 | * There is a good cheat sheet at [git-tower](https://www.git-tower.com/blog/git-cheat-sheet "Git Cheat Sheet")

13 | * There is the official documentation at [git-scm](https://git-scm.com/docs "Git SCM Documentation")

14 | 15 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3 Frappe Bench](bench "Frappe Bench") | Next: [3.1.4 Wonderful World of nginx](nginx "The Wonderful World of nginx") 16 | -------------------------------------------------------------------------------- /i-u-b/install-dev.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.2.1 Installation Troubleshooting](install-trouble "Installation Troubleshooting") | Next: [3.3 Upgrading ERPNext](upgrade "Upgrading ERPNext") 2 | 3 | ### 3.2.2 Installation of a Side by Side Development Environment 4 | 5 | There are scenarios that will necessitate the need for a side-by-side installation. The biggest reason is simple efficiency. There is rarely a need for smaller companies to run three separate [environments](install#Env "Operating Environments") on three separate servers, when one will do. Larger organizations will want to separate the servers out. Mostly due to more rigorous IT Change Management. 6 | 7 | These instructions will install each environment into it's own `bench`. The frappe `bench` program has the option of hosting more than one site at a time (called multi-tenancy), however you cannot separate upgrades and the code base by site. This is handled at the same `bench` configuration. One of the biggest reasons to have a set of isolated environments is to allow an administrator to conduct upgrades of the code without impacting production. That is impossible if the non-production environment sites are in the same `bench` as production. 8 | 9 | The `nginx` web server supports name based resolution, so multiple sites can run off of the same IP address similar to how Apache `httpd` works. The folks at frappe have written `bench` so that even though each site has its own `config/nginx.conf` file, these are still symlinked in the `/etc/nginx/conf.d/` directory, so `nginx` thinks they are all one configuration. 10 | 11 | During [installation](install "Installing ERPNext") we remove the `sudo` rights from the `erpnext` user. During run-time the `erpnext` user does not need `sudo` rights and it is a security risk to leave this configuration in place. We will need `sudo` rights for this procedure, so follow these steps to add the `erpnext` user to the proper `sudoers` group. 12 | 13 | sudo usermod -aG [sudo group] erpnext 14 | 15 | **NOTE:** For these steps we are going to assume you are installing a Stage environment called `eprnext-stg`. This will be the bench name and part of the site name. Remember that the site name needs to be a fully qualified domain name (such as `erpnext-stg.domain.com`) to work for name based resolution. This is why we set production with a fully qualified domain name. 16 | 17 | **NOTE:** Recall that during [installation](install "Installing ERPNext") on RHEL/CentOS that the base bench is placed in `/home/root`. Make sure you are there before you run these commands. Otherwise for Debian based distributions you should be in `/home/erpnext`. 18 | 19 | Now become the `erpnext` user to setup a new bench. 20 | 21 | sudo su - erpnext 22 | 23 | # You should be in the root directory of the erpnext user 24 | # Ensure that bench is setup to get the code from the master branch 25 | bench switch-to-master 26 | bench init erpnext-stg --verbose 2>&1 | tee erpnext-stg-install.log 27 | 28 | # Now get the erpnext code from master branch 29 | cd erpnext-stg 30 | bench get-app erpnext https://github.com/frappe/erpnext --branch master \ 31 | 2>&1 | tee --append ../erpnext-stg-install.log 32 | 33 | # Create the new site and install erpnext in one command 34 | # You will be prompted for the mysql root password and to set the Administrator password 35 | bench new-site erpnext-stg.[domain] --force --install-app erpnext \ 36 | --verbose 2>&1 | tee --append ../erpnext-stg-install.log 37 | bench enable-scheduler 38 | sudo bench setup production --yes erpnext 39 | bench restart 40 | 41 | At this point everything should be ready. You can go to `erpnext-stg.domain.com` and you should get the logon dialog box to setup a fresh installation of ERPNext with the [Setup Wizard](../setup/setup "The Setup Wizard"). 42 | 43 | Now remove `sudoer` rights from the `erpnext` user to move back to a run-time configuration. 44 | 45 | # Logout as erpnext 46 | exit 47 | 48 | sudo usermod -G "" erpnext 49 | 50 | Most administrators will now take a [simple backup](backup#Simple "Backing up ERPNext") of the production site and then [restore](restore "Restoring from a Previous Backup") to the stage site. You will have a carbon copy of your production database in a stage environment that you can use for testing.

51 | 52 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.2.1 Installation Troubleshooting](install-trouble "Installation Troubleshooting") | Next: [3.3 Upgrading ERPNext](upgrade "Upgrading ERPNext") 53 | -------------------------------------------------------------------------------- /i-u-b/install-trouble.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.2 Installing ERPNext](install "Installing ERPNext") | Next: [3.2.2 Installing Development Side by Side](install-dev "Installation of a Side by Side Development Environment") 2 | 3 | ### 3.2.1 Installation Troubleshooting 4 | 5 | There are a number of things that can go wrong with an installation. 6 | 7 | #### 3.2.1.1 Install.py - General Error 8 | 9 | Sometimes `install.py` throws an error that is hard to understand or read. The first thing to do is read that last few ansible script sections in the erpnext-install.log file that you captured during installation: 10 | 11 | less erpnext-install.log 12 | 13 | If the error is not obvious, then the admin guide recommends that you restart `install.py` again with the same command line arguments and see what happens. Often times `install.py` is able to get past the error on a second run and you don't have to do anything. If you get the error again at the same place, then it will need more attention. 14 | 15 | #### 3.2.1.2 Install.py - Unexpected Exception: Module object has no attribute: SSL___SL___INIT 16 | 17 | This installation error is caused if you have an out of date `pyOpenSSL` module installed on the server. To correct, uninstall and reinstall `pyOpenSSL`: 18 | 19 | sudo pip uninstall pyOpenSSL 20 | sudo pip install pyOpenSSL 21 | 22 | and then re-run `install.py` again with the same command line arguments. 23 | 24 | #### 3.2.1.3 Nginx not listening on port 80 after installation 25 | 26 | Go to the `[bench name]` folder that was used during install and run `bench start` and see what errors crop up. Correct them and then restart the server. Run `bench start` again to see if any other errors come up. If not then run `bench update` to finalize settings. Another tip is to become the `root` user and take a look at the `/var/log/nginx/error.log` file and see what is in there. 27 | 28 | Confirm by running 29 | 30 | sudo netstat -tulpn | grep nginx 31 | 32 | and see if the server is running. 33 | 34 | This issue also happens if the `bench` was not setup for production mode. The `erpnext` user will need to be in the `sudo` group first. If it is, then run this command as `erpnext` user to setup the `bench` for production mode: 35 | 36 | sudo bench setup production --yes erpnext 37 | 38 | You should see `nginx` running after this command is run.

39 | 40 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.2 Installing ERPNext](install "Installing ERPNext") | Next: [3.2.2 Installing Development Side by Side](install-dev "Installation of a Side by Side Development Environment") 41 | -------------------------------------------------------------------------------- /i-u-b/install.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: Next: [3.1.5 Software Packages Installed](software "Software Packages Installed") | Next: [3.2.1 Installation Troubleshooting](install-trouble "Installation Troubleshooting") 2 | 3 | ## 3.2 Installing ERPNext 4 | 5 | One of the most common cries for help on the [ERPNext Discussion Forum](https://discuss.erpnext.com/ "ERPNext Discussion Forum") is for installation issues. Getting ERPNext installed can be a bit of a hassle, especially for new Linux administrators. The developers of ERPNext have created an install script (`install.py`) of sorts, but it can back-fire on a new administrator. 6 | 7 |   8 | ### Operating Environments 9 | 10 | Before we get into installation, let us take few minutes and discuss a term: *operating environment*. There are a number of ways various people and organizations use this term with regards to how a system like ERPNext is installed and managed. This is the admin guide's view here: 11 | 12 | * **Production (prd)**: This is the top level environment. This is where the business sees the system being managed and all regular users are using the system. It is the *most protected* of all environments. Change management is very important here. 13 | * **Stage (stg)**: This is the second level environment. Many companies will choose to have a stage environment where testing and other "trial by error" items can be discovered without impacting production. Stage is a *non-production* environment. 14 | * **Development (dev)**: This is the third level environment. This is where code changes occur and all kinds of testing happens. This environment can be completely destroyed at a moments notice and there is no expectation that this environment will ever work. Development is a *non-production* environment. 15 | 16 | **NOTE:** Code and configuration always moves *up* in environment. New code starts at development, moves up through stage with heavy testing and then eventually moves up into production. Configuration changes also move *up* in environment. Often times it is good enough to test a configuration change in stage and then move up to production. However, depending on the nature of the configuration change the administrator may wish to start in development. 17 | 18 | **NOTE:** There is often more than one kind of development environment. The term above is discussing a shared development environment where teams are making changes and testing in a very fluid area. This is not to say that each developer will also have a personal development environment. In either case, development is still *never* considered stage or production. 19 | 20 | ### Server Sizing 21 | 22 | At a minimum, you need a server with 10GB of free disk space (after OS installation) and 2GB of RAM. Production servers will need more RAM and disk space, especially for the `/var` and `/home` mount points. This is where the database and the main application directories are housed respectively. Personal development workstations will want even more RAM to be able to load the GUI, development IDE(s) and other tools. 23 | 24 | ### Network Name 25 | 26 | Before you start the installation, it is good to think about how your users are going to access the system. For production, stage or shared development environments, you will need to have a network name in DNS that is available for everyone. Take the time now to add the proper `CNAME` or `A` record to your DNS zone so that it can propagate while the installation is running. If you are building a personal development environment, then adding the name to the `/etc/hosts` file is also a good idea. Here is an example: 27 | 28 | [IPv4 Address] [site name].[domain name] [site name] 29 | 30 | It is also a good administrative task to ensure that the `/etc/resolv.conf` file is configured for your environment. The admin guide recommends using Google's nameservers: 31 | 32 | #Google IPv4 nameservers 33 | nameserver 8.8.8.8 34 | nameserfer 8.8.4.4 35 | 36 | #Google IPv6 nameservers 37 | nameserver 2001:4860:4860::8888 38 | nameserver 2001:4860:4860::8844 39 | 40 | #Setup your local domain 41 | domain [domain name] 42 | 43 | ### Installation 44 | 45 | ERPNext can be installed on the following OS's: 46 | 47 | * Debian 7 "Wheezy" 48 | * Debian 8 "Jessie" 49 | * Debian 9 "Stretch" -- Debian is a *very* stable operating system and is the **recommended choice**, especially for production environments. 50 | * Ubuntu Server 14.04.x LTS "Trusty Tahr" 51 | * Ubuntu Server 16.04.x LTS "Xenial Xerus" -- Ubuntu 17.x (short term support) is not supported by the easy install script. 52 | * CentOS 7 -- This is also a very stable operating system. If you prefer a RHEL variant for your production environment, this is the choice for you. 53 | * MacOS 10.9 "Mavericks" 54 | * MacOS 10.10 "Yosemite" 55 | * MacOS 10.11 "El Capitan" 56 | * MacOS 10.12 "Sierra" 57 | 58 | For production and stage environments, the admin guide recommends Debian 9 because "it just works". For development environments where a nice user interface on the "server" is wanted then the admin guide recommends Ubuntu 16.04 "Desktop" edition or MacOS 10. Windows is another option for a development environment, however you cannot run the code on Windows so it makes development **a lot** harder. 59 | 60 | **NOTE:** The admin guide recommends that all installation work is done with a `sudo` privileged user. During installation, we will create the required user to run ERPNext. The ERPNext user will have elevated privileges during installation and those rights will be removed at the end. 61 | 62 | **NOTE:** These steps assume you are starting from a freshly installed server. Your mileage will vary if you are attempting to run these steps on an existing server. The easy install script is very **opinionated** meaning it makes a large number of assumptions as to how you want to install the system. The admin guide recommends the using the install script because the Ansible playbooks used do a ton of work very fast saving you a lot of time. The assumptions made are fine for the vast majority of installs. 63 | 64 | For Debian based distributions (Debian, Ubuntu) start by installing a collection of software dependencies. If you are installing on a RHEL based distribution (CentOS), skip down a section. 65 | 66 | # Install the base dependencies 67 | su - # Dedian Only 68 | nano /etc/apt/sources.list # Debian Only - Comment out the dvd/cdrom line 69 | apt-get update # Use sudo ... for Ubuntu 70 | apt-get dist-upgrade -y # Use sudo ... for Ubuntu 71 | 72 | # You will be prompted to configure postfix for smarthost 73 | # Use sudo ... for Ubuntu 74 | apt-get install -y sudo curl wget net-tools postfix vim 75 | 76 | usermod -aG [sudo group name] [your user id] # Debian Only 77 | exit # Debian Only 78 | 79 | # Debian Only - Logoff and back in to set your user id as sudoer 80 | 81 | For Red Hat based distributions (CentOS) start by installing a collection of missing software options. These steps assume you are running CentOS 7 minimal install and created an Administrator level user during installation. 82 | 83 | # Bring system completely up to date 84 | sudo yum update -y 85 | sudo yum install -y curl wget net-tools postfix vim 86 | 87 | The install script installs NodeJS 6.x. We want the latest stable 8.x, which works for all operating systems except Debian 7 "Wheezy". For all supported operating systems, install `NodeJS` from their respective repositories. Debian 7 "Wheezy" users will skip this and install NodeJS 6.x from the easy install script later. 88 | 89 | # Debian/Ubuntu based - Get NodeJS from its own repository 90 | curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - 91 | sudo apt-get install -y nodejs 92 | 93 | # RHEL/CentOS based - Get NodeJS from its own repository 94 | curl -sL https://rpm.nodesource.com/setup_8.x | sudo -E bash - 95 | sudo yum install -y nodejs 96 | 97 | Create the `erpnext` user. The `sudo` group name on Debian based distributions is often `sudo` or `sudoers`. The `sudo` group on RHEL (CentOS) based distributions is often `wheel`. Run these commands: 98 | 99 | # Create the user with the bash shell and add to appropriate sudoers group 100 | sudo useradd -m erpnext -s /bin/bash 101 | sudo usermod -aG [sudo group name] erpnext 102 | 103 | # Create a password for the user 104 | sudo passwd erpnext 105 | 106 | # Become the erpnext user 107 | sudo su - erpnext 108 | 109 | # Test sudo privileges 110 | sudo apt-get update # Debain/Ubuntu 111 | 112 | or 113 | 114 | sudo yum update -y # RHEL/CentOS 115 | 116 | Download and run the install script. 117 | 118 | # Get the install.py file 119 | curl "https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py" \ 120 | -o install.py 121 | 122 | # Confirm you can ping the site 123 | ping [site name].[domain] 124 | 125 | # Install the software 126 | # You will be prompted for what you want the mysql root and erpnext admin passwords to be 127 | sudo python install.py --production --site [site name].[domain] --user erpnext \ 128 | --bench-name erpnext-prd --verbose 2>&1 | tee --append erpnext-install.log 129 | 130 | **NOTE:** If you want a stage environment keep the `--production` flag, but change the `bench-name` to `erpnext-stg`. If you want a development environment keep the `--production` flag, but change the `bench-name` to `erpnext-dev`. There are further steps later if you want to enable developer mode. See [3.2.2 Installation of a Side by Side Development Environment](install-dev) for notes on a side-by-side installation. 131 | 132 | Assuming that everything went great and there is no need for [troubleshooting](install-trouble "Installation Troubleshooting"), you will see something like this: 133 | 134 | PLAY RECAP********************************************************************** 135 | localhost : ok=77 changed=43 unreachable=0 failed=0 136 | 137 | Frappe/ERPNext has been successfully installed! 138 | 139 | Sometimes `install.py` leaves some files in the `bench` we created that we want to clean up. This step will also ensure you are running the latest code and all the NodeJS packages are up to date via `npm`. 140 | 141 | sudo rm /etc/profile.d/screen_wall.sh 142 | cd [bench name] 143 | bench update --reset 144 | # Exit from the erpnext user 145 | exit 146 | 147 | If you want to setup the environment to development mode, follow these instructions . 148 | 149 | Now remove `sudoer` rights form the `erpnext` user. 150 | 151 | sudo usermod -G "" erpnext 152 | 153 | Lastly we need to check on a few things to ensure they are running and installed correctly. 154 | 155 | # Confirm redis-server is running 156 | sudo netstat -tulpn | grep redis-server 157 | sudo redis-server -v # Should be >= 3.2.x 158 | 159 | # Confirm NodeJS and npm 160 | sudo node -v # Should be >= 8.9.x for all except Debian 7 161 | sudo npm -v # Should be >= 5.6.x 162 | 163 | # Confirm mysql/mariadb is running on port 3306 164 | sudo netstat -tulpn | grep mysql 165 | 166 | # Confirm ngingx is listening on port 80 167 | sudo netstat -tulpn | grep nginx 168 | 169 | # Confirm postfix smtp relay is running on port 25 170 | sudo netstat -tulpn | grep master 171 | 172 | # Confirm socket.io is running on port 8000 as a python process 173 | sudo netstat -tulpn | grep 8000 174 | 175 | # Confirm NodeJS is running on port 9000 176 | sudo netstat -tulpn | grep node 177 | 178 | If any of the above items are not running, then you will need to troubleshoot the installation of that component. At this point the `erpnext` user should be an non-sudoer user and you will have an empty production environment running. Next step is to run the [Setup Wizard](../setup/setup "Setup").

179 | 180 | Home: [Table of Contents](../ "Table of Contents") | Previous: Next: [3.1.5 Software Packages Installed](software "Software Packages Installed") | Next: [3.2.1 Installation Troubleshooting](install-trouble "Installation Troubleshooting") 181 | -------------------------------------------------------------------------------- /i-u-b/nginx.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.1.3 Wonderful World of git](git "The Wonderful World of git") | Next: [3.1.5 Software Packages Installed](software "Software Packages Installed") 2 | 3 | ### 3.1.4 The Wonderful World of nginx 4 | 5 | `nginx` is a web server, similar to the popular Apache `httpd` web server. This piece of software is critical to the proper functioning of an ERPNext installation. Ensuring that the configuration of the web server is correct ensures that your installation will work properly and also stays secure, especially if your installation is exposed to the open Internet. 6 | 7 | The best place to learn about nginx is on the [nginx.org](http://nginx.org/en/docs/ "nginx Documentation") website. At a minimum, an administrator should read the Beginner's Guide and the Admin's Guide.

8 | 9 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.1.3 Wonderful World of git](git "The Wonderful World of git") | Next: [3.1.5 Software Packages Installed](software "Software Packages Installed") 10 | -------------------------------------------------------------------------------- /i-u-b/restore.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.4 Backing Up ERPNext](backup "Backing Up ERPNext") | Next: [4 Setup](../setup/setup "Setup") 2 | 3 | ## 3.5 Restoring from a Previous Backup 4 | 5 | Assuming you have a good [simple backup](backup#Simple "Backing Up ERPNext"), you can use these commands to restore the database and files. These commands also assume that you are not [reverting](revert "Reverting to an Older Version") back to a different code base. 6 | 7 | **NOTE**: For some reason the admin guide does not understand, `bench` does not handle relative paths very well. Be sure to fully qualify all of the path's you use for the `bench restore` command. 8 | 9 | sudo su - erpnext 10 | cd [bench name] 11 | bench --force restore \ 12 | --with-public-files /home/erpnext/[bench name]/sites/[site name]/private/backups/[files.tar] \ 13 | --with-private-files /home/erpnext/[bench name]/sites/[site name]/private/backups/[private-files.tar] \ 14 | /home/erpnext/[bench name]/sites/[site name]/private/backups/[sql.gz file] 15 | 16 | This should bring your system's database and files configuration back to the point in time the backup was taken.

17 | 18 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.4 Backing Up ERPNext](backup "Backing Up ERPNext") | Next: [4 Setup](../setup/setup "Setup") 19 | -------------------------------------------------------------------------------- /i-u-b/revert.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous [3.2 Upgrading ERPNext](upgrade "Upgrading ERPNext") | Next: [3.3.4 Upgrade Troubleshooting](upgrade-trouble "Upgrade Troubleshooting") 2 | 3 | ### 3.3.3 Reverting to an Older Version 4 | 5 | ERPNext is not really designed to be reverted or back-ported. However, with some planning it can be done. The main trick is to have good backups. Refer to [3.4 Backing up ERPNext](backup "Backing up ERPNext"). This is the primary reason why we backup all sites before we do an [upgrade](upgrade "Upgrading ERPNext"). With planning and a good backup, you can restore the database to match the known good code base. 6 | 7 | Assuming the steps to take a **full backup** were completed from [3.4 Backing up ERPNext](backup#Full "Backing up ERPNext"), follow these steps to revert to the backed up state. 8 | 9 | **NOTE**: For some reason the admin guide does not understand, `bench` does not handle relative paths very well. Be sure to fully qualify all of the path's you use for the `bench restore` command. 10 | 11 | sudo su - erpnext 12 | # you should be in the root of the erpnext user home directory 13 | rm -Rf [bench name] 14 | tar -xvf erp-prd-backup-[yyyy-mm-dd].tar.bz2 15 | cd [bench name] 16 | 17 | # find the latest backup files in sites/[site name]/private/backups/ 18 | # you will be prompted for the mysql pwd 19 | bench --force restore \ 20 | /home/erpnext/[bench name]/sites/[site name]/private/backups/[sql.gz file] 21 | bench migrate 22 | bench clear-cache 23 | bench clear-website-cache 24 | bench restart 25 | 26 | Following these commands will essentially wipe the old version completely and restore what was taken in the full backup to production.

27 | 28 | Home: [Table of Contents](../ "Table of Contents") | Previous [3.2 Upgrading ERPNext](upgrade "Upgrading ERPNext") | Next: [3.3.4 Upgrade Troubleshooting](upgrade-trouble "Upgrade Troubleshooting") 29 | -------------------------------------------------------------------------------- /i-u-b/software.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.1.4 Wonderful World of nginx](nginx "The Wonderful World of nginx") | Next: [3.2 Installing ERPNext](install "Installing ERPNext") 2 | 3 | ### 3.1.5 Software Packages Installed 4 | 5 | During [Installation](install "Installing ERPNext") the `install.py` Python script will install a collection of software dependencies. 6 | 7 | Here is the alphabetical order listing for all installations (common): 8 | 9 | * ansible 10 | * curl 11 | * erpnext 12 | * frappe bench 13 | * frappe framework 14 | * git 15 | * mariadb 16 | * nginx 17 | * nodejs 18 | * npm 19 | * pip 20 | * redis 21 | * sudo 22 | * wget 23 | * which 24 | * wkhtmltopdf 25 | 26 | Here is a alphabetical order listing for Debian based Linux distributions: 27 | 28 | * build-essential 29 | * dnsmasq 30 | * fontconfig 31 | * htop 32 | * libcrypto++-dev 33 | * libffi-dev 34 | * libfreetype6-dev 35 | * libjpeg62-turbo-dev 36 | * libjpeg8-dev 37 | * liblcms2-dev 38 | * libmariadbclient-dev 39 | * libssl-dev 40 | * libtiff4-dev 41 | * libtiff5-dev 42 | * libwebp-dev 43 | * libxext6 44 | * libxrender1 45 | * libxslt1-dev 46 | * libxslt1.1 47 | * ntp 48 | * postfix 49 | * python-dev 50 | * python-mysqldb 51 | * python-selinux 52 | * python-setuptools 53 | * python-software-properties 54 | * python-tk 55 | * screen 56 | * software-properties-common 57 | * supervisor 58 | * tcl8.5-dev 59 | * tk8.5-dev 60 | * vim 61 | * xfonts-75dpi 62 | * xfonts-base 63 | * zlib1g-dev 64 | 65 | Here is the alphabetical order listing for Red Hat based Linux distributions: 66 | 67 | * bzip2-devel 68 | * cronie 69 | * epel-release 70 | * freetype-devel 71 | * groupinstall 'Development Tools' 72 | * lcms2-devel 73 | * libXext 74 | * libXrender 75 | * libffi-devel 76 | * libjpeg-devel 77 | * libselinux-python 78 | * libtiff-devel 79 | * libwebp-devel 80 | * libxml2 81 | * libxml2-devel 82 | * libxslt 83 | * libxslt-devel 84 | * libzip-devel 85 | * openssl-devel 86 | * postfix 87 | * python-devel 88 | * python-setuptools 89 | * redhat-lsb-core 90 | * supervisor 91 | * tcl-devel 92 | * tk-devel 93 | * xorg-x11-fonts-75dpi 94 | * xorg-x11-fonts-Type1 95 | * zlib-devel 96 | 97 | Here is the listing for MacOS: 98 | * brew 99 | * cmake

100 | 101 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.1.4 Wonderful World of nginx](nginx "The Wonderful World of nginx") | Next: [3.2 Installing ERPNext](install "Installing ERPNext") 102 | -------------------------------------------------------------------------------- /i-u-b/upgrade-trouble.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.3.3 Reverting to an Older Version](revert "Reverting to an Older Version") | Next: [3.4 Backing Up ERPNext](backup "Backing Up ERPNext") 2 | 3 | ### 3.3.4 Upgrade Troubleshooting 4 | 5 | There are a number of things that can go wrong during an upgrade. The best thing to do is to ensure that you did indeed take a good [simple](backup#Simple) and [full](backup#Full) backup of the environment before you started. Second thing to do is capture the `python` stack trace in its entirety and open a new topic on the [discussion forum](https://discuss.erpnext.com/c/bench). The more specific you are in the forum topic the better support you will get from the community. Things that should be mentioned in the post: 6 | 7 | * Current version of ERPNext and Frappe Framework 8 | * Version of each attempting to upgrade to (don't just say current, explicitly state the version number) 9 | * Operating system environment and version 10 | * List of any custom apps installed, including your own 11 | 12 | These things will help the community to better understand your issue. You might have discovered a defect in the software and so a [github issue](https://github.com/frappe/erpnext/issues) will need to be opened. This is why the admin guide stresses the importance of upgrading in a non-production environment first. That way your users will not be impacted by a delay to figure out an issue with an upgrade. Especially if there is a defect, you will have to wait to get it fixed (or fix it yourself and post a pull request) and then wait for a release to master branch to occur to try again.

13 | 14 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.3.3 Reverting to an Older Version](revert "Reverting to an Older Version") | Next: [3.4 Backing Up ERPNext](backup "Backing Up ERPNext") 15 | -------------------------------------------------------------------------------- /i-u-b/upgrade.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.2.2 Installing Development Side by Side](install-dev "Installation of a Side by Side Development Environment") | Next: [3.3.3 Reverting to an Older Version](revert "Reverting to an Older Version") 2 | 3 | ## 3.3 Upgrading ERPNext 4 | 5 | In this section we go over steps to upgrade ERPNext. One of the things that comes up very often on the [Discussion Forum](https://discuss.erpnext.com/ "ERPNext Discussion Forum") is upgrade issues. So besides installation issues, the admin guide would say that the second most often cries for help are from challenges related to upgrading ERPNext. What is interesting is in most cases the administrator is the one who caused their own issue because they didn't take the time to be prepared and get setup in a way to allow them plenty of flexibilty to upgrade in a safe environment. 6 | 7 | What is this "flexibility"? It's very simple: **ONLY UPGRADE IN A NON-PRODUCTION ENVIRONMENT FIRST.** 8 | 9 | Yes, the admin guide purposefully put that in all caps with bold text to make a point. Who upgrades a production environment and breaks it because he didn't take the time to test out an upgrade in a lower level non-production environment! Your company's ERPNext installation is at the heart of its operations! Don't risk messing something up because you (as the administrator) didn't take the time to test out in a safe place where you have all the time in the world to fix before you upgrade production. Please read the section on environments in [3.2 Installing ERPNext](install "Installing ERPNext") and then read [3.2.2 Installation of a Side by Side Development Environment](install-dev "Installation of a Side by Side Development Environment") to get setup. 10 | 11 |   12 | ### 3.3.1 Upgrading from one Major Version to Another 13 | 14 | The developers of ERPNext use a three-numeral version system in this format `[major version].[minor version].[patch level]`. So an upgrade of one major version to another would be like going from v7.x to v8.x or a really big jump would be going from v7.x to v9.x. There are a ton of things that can happen when doing a major upgrade! This is where doing work in a [non-production environment](install-dev "Installation of a Side by Side Development Environment") is really needed. The admin guide has NEVER seen anyone complete a major upgrade without issue. There are too many factors to consider. 15 | 16 | First start with a [good full backup](backup#Full "Backing up ERPNext") of the development system and a [simple backup](backup#Simple "Backing up ERPNext") of the production system. 17 | 18 | Assuming the stage environment is the same version as production (or very close), restore the production database to the stage environment. Before you run the commands below, ensure that the `encryption_key` value in `sites/[site name]/site_config.json` from the production site is also in the stage `site_config.json`. Otherwise you will get an error on restart. 19 | 20 | **NOTE**: For some reason the admin guide does not understand, `bench` does not handle relative paths very well. Be sure to fully qualify all of the path's you use for the `bench restore` command. 21 | 22 | cd erpnext-stg 23 | # restore the prod database snapshot taken, you will be prompted for the mysql root pwd 24 | bench --force restore \ 25 | --with-public-files /home/erpnext/[prd bench name]/sites/[site name]/private/backups/[files.tar] \ 26 | --with-private-files /home/erpnext/[prd bench name]/sites/[site name]/private/backups/[private_files.tar] \ 27 | /home/erpnext/[prd bench name]/sites/[site name]/private/backups/[sql.gz] 28 | 29 | # confirm the database schema matches the code, clear all cache and restart 30 | bench migrate 31 | bench clear-cache 32 | bench clear-website-cache 33 | bench restart 34 | 35 | At this point, you should go into the stage environment user interface and ensure it looks and operates like the current production site. Run trough a few tests to ensure everything is working okay. Don't assume that the copy down operation completed above actually worked! 36 | 37 | Once you are comfortable that the copy down procedure worked, now it's time to upgrade stage. 38 | 39 | bench update 40 | bench clear-cache 41 | bench clear-website-cache 42 | bench restart 43 | 44 | This is often when things go wrong. Refer to [3.3.4 Upgrade Troubleshooting](upgrade-trouble "Upgrade Troubleshooting") for some insight on troubleshooting an upgrade. If everything went fine and no errors were reported, then you will see something like this: 45 | 46 | ... 47 | Wrote js/print_format_v3.min.js - 23.39 KB 48 | Wrote css/erpnext.css - 8 KB 49 | Wrote js/erpnext-web.min.js - 3.73 KB 50 | Wrote js/erpnext.min.js - 137.7 KB 51 | Wrote js/item-dashboard.min.js - 7.91 KB 52 | ________________________________________________________________________________ 53 | Bench: Deployment tool for Frappe and ERPNext (https://erpnext.org). 54 | Open source depends on your contributions, so please contribute bug reports, patches, 55 | fixes or cash and be a part of the community 56 | 57 | Congratulations! Your non-production stage environment has been upgraded to the latest and greatest. Now you need to go into the user interface and test, test and test some more. Did we mention you need to test? Take the time to ensure that every feature of the system your company uses works as expected! Get some help from your fellow employees that are power users. The effort you take now will pay off in the long run. 58 | 59 | Once all testing is finished, the upgrade of the production environment is the same commands as upgrading the non-production stage environment. Just replace `erpnext-stg` with `erpnext-prd` and you are all set. Don't forget to take a [full backup](backup#Full "Backing Up ERPNext") just in case something goes wrong. 60 | 61 | sudo su - erpnext 62 | cd erpnext-prd/ 63 | bench update --upgrade 64 | [any special commands you need to fix issues from troubleshooting] 65 | bench clear-cache 66 | bench clear-website-cache 67 | bench restart 68 | 69 | If you want to revert to the original code base, then [follow these instructions](revert "Reverting to an Older Version"). 70 | 71 |   72 | ### 3.3.2 Upgrading from one minor version to another 73 | 74 | The steps to upgrade from a minor version to another is very similar to the procedure to upgrade from one major version to another. The admin guide *recommends* that site administrators upgrade code once a month in production environments (passing through the non-production environment just like in major upgrades). This provides a few benefits: 75 | 76 | * Your production environment will always be pretty close to the current code base. 77 | * Security issues discovered in the frappe framework are keeping your business safe. 78 | * Upgrades are less painful and require less troubleshooting as they often work much better than trying the major upgrade route. 79 | * The changes to the software are smaller and so any re-training of your users will be easier. 80 | 81 | To summarize the steps: 82 | 83 | 1. Take a [simple backup](backup#Simple "Backing up ERPNext") of the production database and a [full backup](backup#Full "Backing up ERPNext") of the stage environment. 84 | 1. [Restore](restore "Restoring from an ERPNext Backup") the production database to the stage environment. 85 | 1. Run `bench migrate`, `bench clear-cache`, `bench clear-website-cache`, and `bench restart` to get stage ready 86 | 1. Confirm that stage is operating like production. 87 | 1. Run `bench update` and then `bench restart` to update the stage environment to latest code. 88 | 1. Test, Test and Test some more. Leverage your power users. 89 | 1. Take a [simple and a full backup](backup "Backing up ERPNext") of the production database and environment. 90 | 1. Run `bench update` to update the production system to latest code. 91 | 1. Run `bench clear-cache`, `bench clear-website-cache`, and `bench restart` to get production ready 92 | 1. Get some coffee!

93 | 94 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.2.2 Installing Development Side by Side](install-dev "Installation of a Side by Side Development Environment") | Next: [3.3.3 Reverting to an Older Version](revert "Reverting to an Older Version") 95 | -------------------------------------------------------------------------------- /introduction/help.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [2.1 Overview](overview "Overview of ERPNext") | Next [3.1 Frappe Bench](../i-u-b/bench "Frappe Bench") 2 | 3 | ## 2.2 Getting Help 4 | 5 | There are a number of places to get help with your ERPNext installation. 6 | 7 | * The first and obvious place to get help is the discuss forum at [https://discuss.erpnext.com/](https://discuss.erpnext.com/ "Discuss ERPNext"). Sign up and join the conversation! 8 | 9 | * ERPNext is based on the Frappe Framework. There is a separate discuss forum at [https://discuss.frappe.io/](https://discuss.frappe.io/ "Discuss Frappe Framework"). 10 | 11 | * There is an open gitter chat group that you can sign into at [https://gitter.im/frappe/erpnext](https://gitter.im/frappe/erpnext "Gitter.im Channel for ERPNext"). 12 | 13 | * There is the ERPNext GitHub repository at [https://github.com/frappe/erpnext](https://github.com/frappe/erpnext "ERPNext GitHub Repo"). This is where a person would enter in new issues and check out new releases. See [3.3 Upgrading](../i-u-b/upgrade "Upgrading ERPNext"). 14 | 15 | * As any good system, there is a user manual at [https://erpnext.org/docs/user/manual/](https://erpnext.org/docs/user/manual/ "ERPNext User Manual"). If you have not read it from front to back, you should. The English language version is the most complete. 16 | 17 | * There are a number of helpful videos that the ERPNext team has created at [https://erpnext.org/docs/user/videos/learn/](https://erpnext.org/docs/user/videos/learn/ "ERPNext Video Tutorials").

18 | 19 | Home: [Table of Contents](../ "Table of Contents") | Previous: [2.1 Overview](overview "Overview of ERPNext") | Next [3.1 Frappe Bench](../i-u-b/bench "Frappe Bench") 20 | -------------------------------------------------------------------------------- /introduction/overview.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [1.4 Typography](../preface/typography "Typography") | Next: [2.2 Getting Help](help "Getting Help") 2 | 3 | # 2.0 Introduction 4 | 5 | ## 2.1 Overview of ERPNext 6 | 7 | This chapter provides the reader of an overview of the ERPNext platform. 8 | 9 | From the ERPNext Documentation website at [https://erpnext.org/docs](https://erpnext.org/docs "ERPNext Docs") is this excerpt: 10 | 11 | > ERPNext is a fully featured ERP system designed for Small and Medium Sized business. ERPNext covers a wide range of features including Accounting, CRM, Inventory management, Selling, Purchasing, Manufacturing, Projects, HR & Payroll, Website, E-Commerce and much more. 12 | 13 | > ERPNext is based on the Frappe Framework is highly customizable and extendible. You can create Custom Form, Fields, Scripts and can also create your own Apps to extend ERPNext functionality. 14 | 15 | > ERPNext is Open Source under the GNU General Public License v3 and has been listed as one of the Best Open Source Softwares in the world by many online blogs.

16 | 17 | Home: [Table of Contents](../ "Table of Contents") | Previous: [1.4 Typography](../preface/typography "Typography") | Next: [2.2 Getting Help](help "Getting Help") 18 | -------------------------------------------------------------------------------- /preface/audience.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [1.1 Foreword](foreword "Foreword") | Next: [1.3 Prerequisites](prerequisites "Prerequisites") 2 | 3 | ## 1.2 Audience 4 | 5 | This book targets technical resources who will be expected to install, manage, customize (tailor) and generally administrate [ERPNext]("https://erpnext.org" "ERPNext Website"). This is not a user manual for non-technical people, this is a technical manual for technicians.

6 | 7 | Home: [Table of Contents](../ "Table of Contents") | Previous: [1.1 Foreword](foreword "Foreword") | Next: [1.3 Prerequisites](prerequisites "Prerequisites") 8 | -------------------------------------------------------------------------------- /preface/foreword.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [Readme / Index](../README "Readme / Index") | Next: [1.2 Audience](audience "Audience") 2 | 3 | # 1.0 Preface 4 | 5 | ## 1.1 Foreword 6 | 7 | This book was originally created in October 2016 as I began to install and manage an ERPNext 7.0.x installation. The first thing that I noticed was a lack of good administration level technical knowledge for the care and feeding of the platform. The user manual has both technical and non-technical information in it and was confusing to users and technicians alike. This manual was created out of a need to aggregate knowledge from the forums, wiki's, online manuals and other sources into a single place to aid me in managing my self-hosted installation for my small business. The Administrators Guide started out as a LibreOffice Writer document maintained by me. As I became more involved with the ERPNext community and continued to see more and more requests to the forum for basic help I decided to turn the document into Markdown text and publish to the public here at GitHub. 8 | 9 |
James Robertson
November 2017


10 | 11 | Home: [Table of Contents](../ "Table of Contents") | Previous: [Readme / Index](../README "Readme / Index") | Next: [1.2 Audience](audience "Audience") 12 | -------------------------------------------------------------------------------- /preface/prerequisites.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [1.2 Audience](audience "Audience") | Next: [1.4 Typography](typography "Typography") 2 | 3 | ## 1.3 Prerequisites 4 | 5 | To be proficient in the tasks that this book describes, the reader needs to have a good understanding of the following: 6 | 7 | * Linux server administration (any distribution is fine) 8 | * Installation, patching, users, hardening for hosting externally, etc. 9 | * Getting around the operating system, running shell commands, editing files, etc.

10 | * MySQL (or MariaDB) administration 11 | * The frappe `bench` utility does most of the work for the administrator, but having a good understanding of backups, restore, `innodb` file handling and other concepts is very important. The whole system lives in the database! This is the database that runs your business, so keep it managed. 12 | * If you plan to do any report writing, having a good understand of `SELECT`, `JOIN`, `WHERE` and other clauses for running queries is going to be handy.

13 | * `nginx` administration 14 | * This book gives some aid and recipes for tasks, but understanding the underlying architecture of the web server will come in handy.

15 | 16 | Home: [Table of Contents](../ "Table of Contents") | Previous: [1.2 Audience](audience "Audience") | Next: [1.4 Typography](typography "Typography") 17 | -------------------------------------------------------------------------------- /preface/typography.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [1.3 Prerequisites](prerequisites "Prerequisites") | Next: [2.1 Overview of ERPNext](../introduction/overview "Introduction") 2 | 3 | ## 1.4 Typography 4 | 5 | To make things easier to follow in the book, there are a few typographical conventions used. This section contains some examples of the typographical format used throughout the ERPNext Administrator's Guide. 6 | 7 | ### 1.4.1 Code / Command Line 8 | The following example shows commands to be typed in at a command line, or other pre-formatted text form logs, error messages: 9 | 10 | bench use [site name] 11 | bench backup --with-files 12 | bench upgrade --upgrade 13 | 14 | 15 | ### 1.4.2 Replaceable Text 16 | 17 | Any text that is expected to be replaced by something site specific is contained inside of square brackets. In this example the user should place the name of the site (e.g. site1.local) as a replacement for [site name]. 18 | 19 | bench use [site name] 20 | 21 | ### 1.4.3 Important 22 | 23 | Anything that is important to note to the reader is prefaced with **NOTE**: 24 | 25 | ### 1.4.4 Actions 26 | 27 | When describing actions to take in a set of instructions, button clicks are in **bold** font. It is assumed that the word "click" is synonymous with "tap" for touch sensitive interfaces. 28 | 29 | 1. Login to ERPNext with Administrator account 30 | 1. Click the **Login** button 31 | 1. Click **Setup** on the Desk 32 | 33 | ### 1.4.5 Names of Programs / Utilities 34 | 35 | The names of programs or utilities that are referenced in regular text will be in fixed width font, such as `sudo`, `su`, `cd`, or `bench`. 36 | 37 | ## 1.4.6 Path Navigation 38 | 39 | When working inside of ERPNext, the Administrators guide will give a click path to get to a particular document. The format will look like this: 40 | 41 | > Explore > Setup > Users > User 42 | 43 | In this example, the user clicks the Explore icon on the Desktop, navigates to the Setup module, looks for the Users header and clicks on the User document list.

44 | 45 | Home: [Table of Contents](../ "Table of Contents") | Previous: [1.3 Prerequisites](prerequisites "Prerequisites") | Next: [2.1 Overview of ERPNext](../introduction/overview "Introduction") 46 | -------------------------------------------------------------------------------- /reporting/install-bi-dev.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [21.3 Installation of a Business Intelligence Engine](install-bi "Installation of a Business Intelligence Engine") | Next: 2 | 3 | ### 21.4 Installation of BI Development Environment 4 | 5 | Most people code in the [Eclipse IDE](https://en.wikipedia.org/wiki/Eclipse_(software) "Eclipse Software on WikiPedia"). The admin guide recommends that coding of reports also occur in the Eclipse IDE. These are the reasons: 6 | 7 | * The native Jasper Reports Studio that you download from the JasperSoft web site is a repackaged Eclipse IDE with only a single module enabled. 8 | * By using a generic installation of the Eclipse IDE you can not only download and install the Jasper Reports Studio, but also modules to support giving back to the ERPNext community and to this administrator's guide. 9 | 10 | Start by downloading the archive file (`zip` or `tar.gz`) of the "Eclipse IDE for JavaScript and Web Developers" from this web site: . 11 | 12 | **NOTE:** Eclipse Neon is not the latest version of the Eclipse IDE. However, at this time the JasperReports Studio module only supports Neon (v4.6) and not the latest Oxygen (v4.7) release. See the [release notes](https://community.jaspersoft.com/project/jaspersoft-studio/releases "JasperSoft Studio Releases"). Notice the bullet item "*RCP version is now based on Eclipse 4.6.3 platform*". When a future release comes out that supports RCP 4.7.x, then we can upgrade to Eclipse Oxygen. 13 | 14 | Once you have downloaded the IDE software compressed archive. Uncompress it to a directory of your choice. The admin guide recommends something simple like `C:\tools\eclipse-4.6-neon` for Windows machines or `~/tools/eclipse-4.6-neon` on MacOS or Linux. 15 | 16 | When finished, open the IDE: 17 | * Windows - run `eclipse.exe` 18 | * MacOS - run `Eclipse.app/Contents/MacOS/eclipse` 19 | * Linux - run `eclipse/eclipse` 20 | 21 | From the Welcome page, click to **Launch the Eclipse Marketplace**. Find and install the following: 22 | 23 | * Jaspersoft Studio 24 | * EGit - Git Integration for Eclipse 4.6.0 25 | * GitHub Flavored Markdown Viewer 26 | * GitHub Extensions 27 | * Markdown Text Editor 28 | * PyDev - Python IDE for Eclipse 29 | * Data Tools Platform 30 | 31 | After a restart of Eclipse, you will need to get the MariaDB Java `jar` files for the database client. Go to this website -- and download the latest stable files. Drop them to a known good location such as the root directory of your installation. 32 | 33 | Open the driver configuration 34 | 35 | > Window > Preferences > Data Management > Connectivity > Driver Definition 36 | 37 | Click Add, Pick *MySQL JDBC Driver* (any version). Click on the Jar List tab. Add the `mariadb-java-client-[x].[y].[z].jar` and `mariadb-java-client-[x].[y].[z]-javadoc.jar` files to the list. Remove any out of the box `mysql.jar` references. Click on the Properties tab. Change Connection URL to `jdbc:mysql://[server]:3306/[database]`, change Database Name to `[database]`, change Driver Class to `org.mariadb.jdbc.Driver`, and change User ID to `[user]. Click OK to Save. 38 | 39 | Now you are ready to create a connection to the server for reporting. 40 | 41 | Open the report design perspective. 42 | 43 | > Window > Perspective > Open Perspective > Other 44 | 45 | Select "Report Design" from the list of perspectives. 46 | 47 | Now you are ready to build some reports! Read the [documentation](https://community.jaspersoft.com/project/jaspersoft-studio/resources) online.

48 | 49 | Home: [Table of Contents](../ "Table of Contents") | Previous: [21.3 Installation of a Business Intelligence Engine](install-bi "Installation of a Business Intelligence Engine") | Next: 50 | -------------------------------------------------------------------------------- /reporting/install-bi.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [21.2 Types of Reporting](types "Types of Reporting") | Next: [21.4 Installation of BI Development Environment](install-bi-dev "Installation of BI Development Environment") 2 | 3 | ## 21.3 Installation of a Business Intelligence Engine 4 | 5 | There are a number of excellent open source business intelligence (BI) reporting tools out there. The most well known and purely open source is the [Eclipse Business Intelligence Reporting Tool (BIRT)](http://www.eclipse.org/birt/). There is also the [JasperSoft JasperReports Server](https://community.jaspersoft.com/project/jasperreports-server). This open source project is backed by the commercial company TIBCO. 6 | 7 | The admin guide recommends JasperSoft JasperReports Server for an external BI Engine. The primary reason is there is a custom app available as an integration point in ERPNext between ERPNext and JasperReports. With this application installed in your ERPNext installation you don't have to maintain a separate reporting portal. Everything is available from the ERPNext Desk. 8 | 9 | ### 21.3.1 Installation of JasperSoft JasperReports Server 10 | 11 | JasperSoft has some great documentation here - - that you should definitely read over. Scroll down to the installation section of the page and download the installation guide. The community edition is what you will want to install for a base setup. 12 | 13 | **NOTE:** You don't have to install the JasperSoft JasperReports Server to run JasperReports in ERPNext. The custom application installed in the next step has a default option of hosting the reports locally. If you are just starting out, it is probably easiest to just install the app into ERPNext and host the reports locally. 14 | 15 | ### 21.3.2 Installation of Jasper Reports Custom ERPNext App 16 | 17 | There are two versions of the "Jasper EPNext Report" custom application. The original version was written by `saguas` and placed on GitHub here - . The repository has become stale (last commit was in 09/2016) and `consoleerp` has forked the original and made updates. The fork is on GitHub here - . We will install and use the `consoleerp` fork as it is more maintained. 18 | 19 | Recall that during [installation](../i-u-b/install "Installing ERPNext") that we remove `sudo` rights from the `erpnext` user. Follow these steps as another user with `sudo` rights to get started: 20 | 21 | # Ensure that the contrib library is enabled in /etc/apt/sources.list 22 | sudo apt-get update 23 | sudo apt-get install -y openjdk-8-jdk fonts-liberation fonts-freefont-ttf ttf-mscorefonts-installer 24 | sudo python -m pip install --upgrade pip setuptools 25 | sudo python -m pip install --upgrade cython 26 | sudo python -m pip install --upgrade pyjnius 27 | 28 | # Add JAVA_HOME to non-interactive, non-login shell environment 29 | echo -e """JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")""" | sudo \ 30 | tee --append /etc/environment 31 | echo -e "JDK_HOME=$JAVA_HOME" | sudo tee --append /etc/environment 32 | 33 | # Add JAVA variables for interactive, login shell environments 34 | # Copy & Paste from sudo ... to EOF" into putty window 35 | sudo bash -c "cat < /etc/profile.d/java.sh 36 | #!/bin/bash 37 | 38 | #Setup Java JDK for all users 39 | export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") 40 | export JDK_HOME=$JAVA_HOME 41 | export PATH=$PATH:$JAVA_HOME/bin 42 | 43 | EOF" 44 | 45 | # Restart the server 46 | sudo shutdown -r now 47 | 48 | Take a [simple and full backup](../i-u-b/backup "Backing up ERPNext") of the ERPNext environment. Always good practice before you install anything into ERPNext so you have a means to [revert](../i-u-b/revert "Reverting from a known good backup") to a known good state if something goes wrong. 49 | 50 | Assuming you are the `erpnext` user from the backup procedure, check for JAVA_HOME 51 | 52 | echo $JAVA_HOME 53 | 54 | Now install the application 55 | 56 | cd [bench name] 57 | bench get-app jasper_erpnext_report https://github.com/consoleerp/jasper_erpnext_report.git \ 58 | 2>&1 | tee jasper-reports-install.log 59 | bench install-app jasper_erpnext_report 2>&1 | tee --append jasper-reports-install.log 60 | 61 | # This step will upgrade your environment to latest code along with installing the 62 | # python requirements for jasper_erpnext_report. 63 | bench update --requirements 2>&1 | tee --append jasper-reports-install.log 64 | 65 | #### 21.3.2.1 Setup Role Permissions Manager Permissions 66 | 67 | After the installation of the Jasper ERPNext Report application, an administrator (System Manager) will need to log on to ERPNext and setup roles in Role Permissions Manager. 68 | 69 | There are three doctypes that are installed: 70 | 71 | * Jasper Email Reports 72 | * Jasper Reports 73 | * JasperServerConfig 74 | 75 | The out of box configuration in Role Permissions Manager is out dated a bit. Open Role Permission Manager: 76 | 77 | > Explore > Setup > Permissions > Role Permissions Manager 78 | 79 | 1. Select **Jasper Email Reports**. Add a new role for System Manager and set to be the same as the out of box Administrator role. 80 | 81 | 1. Select **JasperServerConfig**. Add a new role for System Manager and set to be the same as the out of box Administrator role. 82 | 83 | 1. Select **Jasper Reports**. 84 | * Add a new role for System Manager Levels 0, 1 and 2 to be the same as the out of box Administrator role. 85 | * Remove the out of box roles for Accounts Manager Levels 0 and 2. 86 | 87 | What this will do is lock down the permissions to just the System Manager role to start. That way no one will see anything until you are ready. 88 | 89 | From the User menu, select **Reload** to clear the cache. Then open Jasper Erpnext Report 90 | 91 | > Explore > Jasper Erpnext Report 92 | 93 | #### 21.3.2.2 Setup MariaDB for Reporting 94 | 95 | If you need to be able to communicate to the server from a remote host, then follow these directions -- . This is usually needed as most administrators will want to use external database management tools and query "builder" tools to help develop the queries used for reporting. 96 | 97 | Some suggested management and "query" tools: 98 | * phpMyAdmin -- 99 | * Eclipse Data Tools Platform (DTP) -- 100 | * SQuirreL SQL Client -- 101 | 102 | It is a best practice to run reports with a "reporting user". You can read this documentation -- . Create a reporting user in the MariaDB instance for your envrionment. 103 | 104 | # Logon to MariaDB 105 | mysql -u root -p 106 | 107 | # Create the user 108 | CREATE USER 'erpnext-reports'@'%' IDENTIFIED BY '[password]'; 109 | GRANT SELECT ON *.* to 'erpnext-reports'@'%'; 110 | FLUSH PRIVILEGES; 111 | exit; 112 | 113 | # Now test the new user 114 | mysql -u erpnext-reports -p 115 | 116 |
117 | 118 | Home: [Table of Contents](../ "Table of Contents") | Previous: [21.2 Types of Reporting](types "Types of Reporting") | Next: [21.4 Installation of BI Development Environment](install-bi-dev "Installation of BI Development Environment") 119 | -------------------------------------------------------------------------------- /reporting/introduction.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: 20.4.3 Webhook | Next: [21.2 Types of Reporting](types "Types of Reporting") 2 | 3 | # 21.0 Reporting 4 | 5 | ## 21.1 Introduction 6 | 7 | Any organization is going to need reporting, especially from a platform that is used to run a business. This section goes into the types of reporting and gets an administrator ready to develop reports. 8 | 9 | Home: [Table of Contents](../ "Table of Contents") | Previous: 20.4.3 Webhook | Next: [21.2 Types of Reporting](types "Types of Reporting") 10 | -------------------------------------------------------------------------------- /reporting/types.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [21.1 Introduction](introduction "Reporting Introduction") | Next: [21.3 Installation of External BI Engine](install-bi "Installation of External BI Engine") 2 | 3 | ## 21.2 Type of Reporting in ERPNext 4 | 5 | There are four types of reporting available for ERPNext. Three of them are them work great for non-programmers. 6 | 7 | 1. Internal JSON Based "Report Builder" Reports 8 | 1. Internal SQL "Query" Reports 9 | 1. Internal Python "Script" Reports 10 | 1. External Business Intelligence (BI) Engine based Reports. 11 | 12 | Numbers 1, 2 and 4 are great for non-programmer type administrators. Python "Script" based reports are great and integrated into the environment, however you have to have a understanding of python, the frappe framework and programming in order to create these kinds of reports. They also need to be installed into a "custom application" so that upgrades to ERPNext don't impact your changes. These kinds of reports are out of the scope of the admin guide. 13 | 14 | The ERPNext User Manual has another good overview of the three internal reporting types here: 15 | 16 | 17 | 18 | Here are links to documentation for the three internal reporting types: 19 | 20 | 1. Report Builder Reports - ERPNext has not created any. See below. 21 | 1. Query Reports - 22 | 1. Script Reports - 23 | 24 | To get a listing of all of the reports installed in your environment, search for the "**Report List**" in the quick search bar at the top of the Desk. 25 | 26 |   27 | ### 21.2.1 Report Builder Reports 28 | 29 | These are by far the easiest reports to create. Open the document list of the doctype you wish to create a simple report for. From the left menu, click **Reports** and then **Report Builder**. 30 | 31 | You can then: 32 | - Pick Columns 33 | - Set the Sort Order 34 | - Show a Totals Row 35 | 36 | #### Pick Columns 37 | 38 | This button allows you to select the field from the doctype that you want to report on. 39 | 40 | #### Set the Sort Order 41 | 42 | You can setup a quick default sort order for the various columns(s) in the report. 43 | 44 | #### Show a Totals Row 45 | 46 | If the report has number in it, such as an accounting report, then adding a totals row to the report might make sense. 47 | 48 | When finished, click **Save** to save the report.

49 | 50 | Home: [Table of Contents](../ "Table of Contents") | Previous: [21.1 Introduction](introduction "Reporting Introduction") | Next: [21.3 Installation of External BI Engine](install-bi "Installation of External BI Engine") 51 | -------------------------------------------------------------------------------- /setup/domains.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [4.1 Setup](setup "Setup Wizard") | Next: [5 Explore > Setup](../explore-setup/setup "Explore > Setup") 2 | 3 | ## 4.2 Domains 4 | 5 | As of version 10.x of ERPNext, these are the available domains: 6 | * Agriculture (beta) 7 | * Distribution 8 | * Education 9 | * Healthcare (beta) 10 | * Manufacturing 11 | * Non Profit (beta) 12 | * Retail 13 | * Services 14 | 15 | ### 4.2.1 Agriculture 16 | 17 | The agriculture domain is used for businesses that operate as agricultural companies such as farms, ranches, etc. This is a very new domain to the ERPNext platform and has not been documented very well to date. 18 | 19 | Please see ERPNext documentation on this domain: 20 | 21 | The setup wizard will add the following desktop icons: 22 | * Agriculture Task 23 | * Crop 24 | * Crop Cycle 25 | * Fertilizer 26 | * Item 27 | * Land Unit 28 | * Disease 29 | * Plant Analysis 30 | * Soil Analysis 31 | * Soil Texture 32 | * Task 33 | * Water Analysis 34 | * Weather 35 | 36 | The setup wizard will add the following user roles: 37 | * Agriculture Manager 38 | * Agriculture User 39 | 40 | The setup wizard will enable the following modules: 41 | * Agriculture 42 | 43 | ### 4.2.2 Distribution Domain 44 | 45 | The distribution domain is for companies and move product in some manner. This can be a retail establishment, but there is a dedicated domain for that. Distribution companies are often operate in a wholesale environment and don't need point of sale (POS) type functionality, but do need to maintain stock and track sales and customers. 46 | 47 | The setup wizard will add the following desktop icons: 48 | * Item 49 | * Customer 50 | * Supplier 51 | * Lead 52 | * Sales Order 53 | * Purchase Order 54 | * Task 55 | * Sales Invoice 56 | * CRM 57 | * ToDo 58 | 59 | The setup wizard will add the following user roles: 60 | * None other than the standard out of box ones 61 | 62 | The setup wizard will enable the following modules: 63 | * None other than the standard out of box ones 64 | 65 | ### 4.2.3 Education Domain 66 | 67 | The education domain is for organizations that operate some kind of school or need to track students and other things for "classes". This domain was recently renamed from Schools to Education. 68 | 69 | Please see ERPNext documentation on this domain: 70 | 71 | The setup wizard will add the following desktop icons: 72 | * Student 73 | * Program 74 | * Course 75 | * Student Group 76 | * Instructor 77 | * Fees 78 | * Task 79 | * ToDo 80 | * Education 81 | * Student Attendance Tool 82 | * Student Applicant 83 | 84 | The setup wizard will add the following user roles: 85 | * Student 86 | * Instructor 87 | * Academics User 88 | * Education Manager 89 | 90 | The setup wizard will enable the following modules: 91 | * Education 92 | 93 | ### 4.2.4 Healthcare Domain 94 | 95 | The healthcare domain is for companies that run clinics or other healthcare facilities that need a electronic medical record (EMR) system. This is a very new domain to the ERPNext platform and has not been documented very well to date. 96 | 97 | Please see ERPNext documentation on this domain: 98 | 99 | The setup wizard will add the following desktop icons: 100 | * Patient 101 | * Patient Appointment 102 | * Consultation 103 | * Lab Test 104 | * Healthcare 105 | * Accounts 106 | * Buying 107 | * Stock 108 | * HR 109 | * ToDo 110 | 111 | The setup wizard will add the following user roles: 112 | * Healthcare Administrator 113 | * LabTest Approver 114 | * Laboratory User 115 | * Nursing User 116 | * Physician 117 | * Patient 118 | 119 | The setup wizard will enable the following modules: 120 | * None other than the standard out of box ones 121 | 122 | The setup wizard does customize the Sales Invoice DocType with a link to the Patient Appointment DocType to track the billing to the appointment for a patient. 123 | 124 | ### 4.2.5 Manufacturing Domain 125 | 126 | The manufacturing domain is for companies that "make" things. There is a huge list of potential manufacturing companies out there, so the Admin guide is not going to attempt to give an exhaustive list. As as administrator for your organization or client, you will know if you need the manufacturing domain. 127 | 128 | Please see ERPNext documentation on this domain: 129 | 130 | The setup wizard will add the following desktop icons: 131 | * Item 132 | * BOM (Bill of Materials) 133 | * Customer 134 | * Supplier 135 | * Sales Order 136 | * Purchase Order 137 | * Production Order 138 | * Task 139 | * Accounts 140 | * HR 141 | * ToDo 142 | 143 | The setup wizard will add the following user roles: 144 | * None other than the standard out of the box ones 145 | 146 | The setup wizard will enable the following modules: 147 | * None other than the standard out of the box ones 148 | 149 | The setup wizard does customize the Item DocType with a field named "manufacturing" that is collapsible and depends on the value for the "is_stock_item" field. In the manufacturing domain, maintaining the supply chain is one of the most important aspects of the business. Understanding the difference between what is "in stock" and available for shipping or fulfillment and what is and assembly component are very important. This field helps with that differentiation. 150 | 151 | The setup wizard also adjusts the default [stock settings](../explore/setup/stock/stock-settings "Stock Settings") so that "show barcode" is always shown on Items in the database. 152 | 153 | Lastly, the setup wizard sets the default portal role to "Customer". 154 | 155 | ### 4.2.6 Non-Profit Domain 156 | 157 | The non-profit domain is for organizations that operate as a special jurisdiction specific non-profit (non-taxable) entity. These are very special organizations that have much different needs that typical for-profit companies. The biggest difference is the need to track members, donors, volunteers, grants and other accounting specifics. 158 | 159 | Please see ERPNext documentation on this domain: 160 | 161 | The setup wizard will add the following desktop icons: 162 | * Non Profit 163 | * Member 164 | * Donor 165 | * Volunteer 166 | * Grant Application 167 | * Accounts 168 | * Buying 169 | * HR 170 | * ToDO 171 | 172 | The setup wizard will add the following user roles: 173 | * Non Profit Manager 174 | * Non Profit Member 175 | * Non Profit Portal User 176 | 177 | The setup wizard will enable the following modules: 178 | * Non Profit 179 | 180 | The setup wizard sets the default portal role to "Non Profit Manager". 181 | 182 | ### 4.2.7 Retail Domain 183 | 184 | The retail domain is for companies that sell things at "retail". This is different than organizations the operate in the manufacturing or distribution domains. These companies operate in the "pre-retail" phase of production. Non-Profit organization quite often sell items "at retail" as part of their operations. 185 | 186 | The setup wizard will add the following desktop icons: 187 | * POS (Point of Sale) 188 | * Item 189 | * Customer 190 | * Sales Invoice 191 | * Purchase Order 192 | * Accounts 193 | * Task 194 | * ToDo 195 | 196 | The setup wizard will add the following user roles: 197 | * None other than the standard out of the box ones 198 | 199 | The setup wizard will enable the following modules: 200 | * None other than the standard out of the box ones 201 | 202 | The setup wizard adjusts the default [stock settings](../explore/setup/stock/stock-settings "Stock Settings") so that "show barcode" is always shown on Items in the database. 203 | 204 | The setup wizard sets the default portal role to "Customer". 205 | 206 | ### 4.2.8 Service Domain 207 | 208 | The services domain is for organizations that conduct professional services (i.e. Lawyers, Consultants). A lot of organizations, especially retail companies also have a services arm. This domain is often combined with retail, but not always. 209 | 210 | The setup wizard will add the following desktop icons: 211 | * Project 212 | * Timesheet 213 | * Customer 214 | * Sales Order 215 | * Sales Invoice 216 | * CRM (Customer Relationship Management) 217 | * Task 218 | * Expense Claim 219 | * Employee 220 | * HR 221 | * ToDo 222 | 223 | The setup wizard will add the following user roles: 224 | * None other than the standard out of the box ones 225 | 226 | The setup wizard will enable the following modules: 227 | * None other than the standard out of the box ones 228 | 229 | The setup wizard adjusts the default [stock settings](../explore/setup/stock/stock-settings "Stock Settings") so that "show barcode" is not always shown on Items in the database. 230 | 231 | The setup wizard sets the default portal role to "Customer".

232 | 233 | Home: [Table of Contents](../ "Table of Contents") | Previous: [4.1 Setup](setup "Setup Wizard") | Next: [5 Explore > Setup](../explore-setup/setup "Explore > Setup") 234 | -------------------------------------------------------------------------------- /setup/setup.md: -------------------------------------------------------------------------------- 1 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.5 Restoring from a Previous Backup](../i-u-b/restore "Restoring from a Previous Backup") | Next: [4.2 Domains](domains "Domains") 2 | 3 | # 4.0 Setup 4 | 5 | ## 4.1 The Setup Wizard 6 | 7 | The Setup Wizard handles all of the initial setup steps on a brand new install. Once [installation](../i-u-b/install "Install ERPNext") has been completed and confirmed, open a browser window to the network name you gave the installation. Logon with user `Administrator` and the password you gave `install.py` at installation. If you don't recall the password, it was saved for you. 8 | 9 | sudo cat /home/erpnext/passwords.txt 10 | 11 | The `admin_password` is what you are looking for. 12 | 13 | The current users manual does a good job explaining the Setup Wizard. The Setup Wizard will walk you through a collection of questions to do a base setup of your company. See [4.2 Domains](domains "ERPNext Domains") for more information on the impact of selecting a domain for your organization. 14 | 15 | 16 | 17 | When the Setup Wizard as completed, you will be redirected to the ERPNext Desk (Desktop) as the user that you created during the wizard. You will then be prompted to answer another set of questions to complete the initial setup of your environment.

18 | 19 | Home: [Table of Contents](../ "Table of Contents") | Previous: [3.5 Restoring from a Previous Backup](../i-u-b/restore "Restoring from a Previous Backup") | Next: [4.2 Domains](domains "Domains") 20 | --------------------------------------------------------------------------------