[{"id": 620, "name": "om_account_accountant", "summary": "Accounting Reports, Asset Management and Budget, Recurring Payments, Lock Dates, Fiscal Year, Accounting Dashboard, Financial Reports, Customer Follow up Management, Bank Statement Import", "author": "Odoo Mates, Walnut Software Solutions, Odoo SA", "shortdesc": "Odoo 17 Accounting", "description": "Odoo 17 Financial Reports, Asset Management and Budget, Financial Reports, Recurring Payments, Bank Statement Import, Customer Follow Up Management,Account Lock Date, Accounting Dashboard"}, {"id": 629, "name": "odoo_python_pip_install_library", "summary": "Install The Library With In The Odoo Environment in easily, directly and better way", "author": "Odoo Waves", "shortdesc": "Odoo Python Pip Installer", "description": "Python Library Installer"}, {"id": 395, "name": "sale_management", "summary": "从报价到发票", "author": "Odoo S.A.", "shortdesc": "销售", "description": "\n管理销售报价单和订单\n==================================\n\n通过该应用程序，您可以跟踪所有销售订单和历史记录，从而有效、高效地管理销售目标。\n\n它可以处理整个销售工作流程：\n\n* **报价单** -> 销售订单** -> 发票**\n\n首选项（仅适用于已安装仓库管理的系统）\n------------------------------------------------------\n\n如果您还安装了仓库管理，则可以处理以下首选项：\n\n* 发货：选择一次发货或部分发货\n* 发票：选择发票支付方式\n* 国际贸易术语解释通则：国际商业条款\n\n\n通过该模块，您可以对销售订单和发票报告进行个性化设置，包括\n类别、小计或分页。\n\n销售经理的仪表板将包括\n------------------------------------------------\n* 我的报价单\n* 月营业额（图表）\n"}, {"id": 1, "name": "account", "summary": "发票与付款", "author": "Odoo S.A.", "shortdesc": "发票", "description": "\n发票与付款\n====================\nERP 中具体易用的发票系统可让您跟踪您的账目，即使您不是会计。它提供了一种跟进供应商和客户的简便方法。\n\n如果您使用（外部）账户记账，但仍想跟踪付款工作，您可以使用这一简化的会计功能。该模块还为您提供了一种登记付款的简便方法，无需对完整的账户摘要进行编码.\n"}, {"id": 47, "name": "crm", "summary": "CRM模块：用于客户关系管理，将客户价值最大化", "author": "Odoo S.A.", "shortdesc": "CRM", "description": "ERP CRM\n--------\n\n使用 ERP \n<a href=\"https://www.odoo.com/app/crm\">开源 CRM</a>。\n\n轻松管理销售流水线。吸引销售线索，跟进电话\n电话和会议。分析销售线索的质量，做出明智的决策。\n将电子邮件直接整合到应用程序中，从而节省时间。\n\n您的销售流水线，您喜欢的方式\n--------------------------------------\n\n使用革命性的看板视图跟踪您的销售机会流水线。工作\n在您的销售流水线内工作，并即时获得有关下一步行动的可视化信息、\n新信息、首要机会和预期收入的即时可视化信息。\n\n轻松管理销售线索\n-------------------------\n\n从收到的电子邮件中自动创建销售线索。分析销售线索的效率，并\n按营销活动、流水线或销售团队比较业绩。\n\n查找重复线索、合并线索并将其分配给合适的销售人员，只需一次\n操作。减少管理时间，将更多时间花在线索的鉴定上。\n\n整理您的机会\n---------------------------\n\n整理您的商机，专注于最佳交易。管理所有\n客户互动，如电子邮件、电话、\n内部笔记、会议和报价。\n\n关注您感兴趣的机会，以便在发生特定事件时获得通知：\n交易成功或失败、阶段变化、新客户需求等。\n\n电子邮件集成和自动化\n--------------------------------\n\n与您日常使用的电子邮件应用程序协同工作。无论您的\n公司使用 Microsoft Outlook 还是 Gmail，都无需改变工作方式。\n工作方式，因此每个人都能保持高效率。\n\n自动路由、分类和过滤收到的电子邮件。ERP CRM 可处理收到的\n邮件，并将其转发给合适的机会或销售团队。新线索\n并自动通知感兴趣的销售人员。\n\n协作议程\n--------------------\n\n使用集成日历安排会议和电话。您可以\n在一个视图中查看自己和同事的日程。作为经理，您可以轻松\n看到你的团队在忙什么。\n\n线索自动化和营销活动\n---------------------------------------\n\n利用 ERP <a href=\"https://www.odoo.com/app/crm\">CRM</a> 自动执行任务，提高业绩。\n\n使用我们的营销活动，实现线索获取、跟进和促销的自动化。\n促销活动。定义自动化规则（例如，要求销售人员拨打电话、发送电子邮件......）。\n电子邮件......）。\n促销电子邮件等）\n\n在每个流水线上优化从销售线索到成交的营销活动。做出更明智的决策\n投资方向，并显示营销活动对公司底线的影响。\n公司底线的影响。\n\n定制您的销售周期\n--------------------------\n\n通过配置完全适合您的销售方法的销售阶段，自定义您的销售周期。\n销售方法。控制统计数据以获得准确的预测，从而提高您的\n客户关系每个阶段的销售业绩。\n\n通过游戏化提高参与度\n----------------------------------\n\n### 利用团队天生的竞争欲望\n\n强化良好习惯，提高胜率\n游戏机制](http://en.wikipedia.org/wiki/Gamification) 的启发，强化良好习惯并提高胜率。\n通过挑战、个人目标和团队排行榜，围绕明确的业务目标调整销售团队。\n目标和团队排行榜。\n\n###排行榜\n\n通过业绩比率在销售团队中提升领导力和竞争性。\n\n###个人目标\n\n为用户指定明确的目标，使其与公司目标保持一致。\n\n### 团队目标\n\n实时比较收入与预测和预算.\n\n"}, {"id": 527, "name": "website", "summary": "该模块可迅速帮助企业建立官方网站，具有树立企业品牌形象、提升企业信誉、品牌推广、产品展示、传播企业文化、扩展销售渠道等功效", "author": "Odoo S.A.", "shortdesc": "网站", "description": "ERP 网站生成器\n--------------------\n\n获得一个超棒的<a href=\"https://www.odoo.com/app/website\">免费网站</a>、\n使用 ERP <a href=\"https://www.odoo.com/app/website\">网站生成器</a>轻松定制。\n\n使用我们超级简单的生成器创建企业级网站。使用精心设计的\n设计的构建模块，并在线编辑所有内容。\n\n受益于开箱即用的业务功能；电子商务、活动、博客、招聘\n公告、客户推荐、呼叫到行动等。\n\n在线编辑任何内容\n--------------------\n\n无需任何技术知识即可创建精美网站。ERP 独特的\n内联'*方法使网站创建变得出奇简单。不再需要复杂的\n后台；只需点击任意位置，即可更改任何内容。\n\n\"想要更改产品价格？想更改\n博客标题？只需点击并更改。所见即所得。真的\n\n棒极了美得惊人。\n---------------------------------\n\nERP 的构建模块允许设计现代网站，这是传统的 WYSIWYG 页面编辑器无法实现的。\n的现代网站。\n\n无论是产品描述、博客还是静态页面，您无需成为专业设计师\n专业设计师也能创建简洁的内容。只需拖放和\n自定义预定义的构建模块。\n\n企业就绪，开箱即用\n--------------------------------\n\n只需点击一下，即可激活随时可用的企业功能；电子商务、\n呼叫到行动、职位公告、活动、客户推荐、博客等。\n\n传统电子商务和内容管理系统的后台设计不佳，因为这不是它们的\n核心重点。有了 ERP 集成，您将受益于最好的管理软件\n软件来跟进您的订单、求职者和潜在客户等。\n\n绝佳的移动体验\n-------------------------\n\n我们基于\n引导式设计。您的所有页面都会自动适应屏幕尺寸。手机\n手机、平板电脑、台式机）您不必担心移动内容，它\n默认运行。\n\n唾手可得的搜索引擎优化工具\n-----------------------------\n\n*Promote* 工具可根据谷歌搜索次数最多的词来推荐关键词。\n搜索引擎优化工具即开即用，无需配置\n无需配置。\n\n默认情况下，谷歌分析会跟踪您的购物车事件。网站地图和\n结构化内容会自动创建，以便 Google 索引。\n\n轻松实现多语言\n-------------------------\n\n轻松将您的网站翻译成多种语言。ERP\n并根据您在主页面上编辑的内容在各页面上自动传播翻译。\n在主页面上编辑的内容。\n\n设计师友好模板\n---------------------------\n\n模板非常棒，而且易于设计。您无需开发即可创建\n新的页面、主题或构建模块。我们使用简洁的 HTML 结构、[bootstrap]()\n[bootstrap](http://getbootstrap.com/)CSS。\n\n使用集成的模板编辑器即时定制每个页面。发布\n您的作品作为 ERP 模块轻松发布。\n\n流体网格布局\n--------------------\n\n通过拖放构件设计完美页面。移动和缩放它们\n以满足您的布局需求。\n\n构件基于响应式、移动友好的流体网格系统\n当设备或视窗尺寸增大时，可适当缩放至 12 列。\n增加。\n\n专业主题\n-------------------\n\n设计自定义主题或重复使用预定义主题，自定义网站的外观和感觉。\n网站的外观和感觉。\n\n轻松测试新的配色方案；只需轻点鼠标，即可随时更改主题。\n点击即可更换主题。\n\n与 ERP 应用程序集成\n-------------------------\n\n### 电子商务\n\n推广产品、在线销售、优化访客的购物体验。\n\n\n###博客\n\n撰写新闻，吸引新访客，建立客户忠诚度。\n\n\n### 在线活动\n\n安排、组织、推广或销售在线活动；会议、培训、网络研讨会等.\n"}, {"id": 433, "name": "stock", "summary": "基本进销存中的存的功能模块：用于管理您的仓库库存管理等", "author": "Odoo S.A.", "shortdesc": "库存", "description": ""}, {"id": 378, "name": "purchase", "summary": "采购订单、投标和协议", "author": "Odoo S.A.", "shortdesc": "采购", "description": "ERP 供应链\n-----------------\n\n使用 ERP \n<a href=\"https://www.odoo.com/app/purchase\">开源供应链</a>。\n\n自动化采购提议、启动询价、跟踪\n采购订单、管理供应商信息、控制产品接收和\n检查供应商发票。\n\n自动化采购提议\n----------------------------------\n\n利用采购规则降低库存水平。在正确的时间获得正确的采购\n建议，以降低库存水平。提高您的\n采购规则，提高采购和库存绩效。\n水平、物流规则、销售订单、预测的生产订单等。\n\n一键向供应商发送报价请求或采购订单。\n从采购订单中获取产品接收信息和发票。\n\n采购招标\n----------------\n\n发起采购招标，在此过程中整合供应商的答复并\n比较建议。选择最佳报价，轻松发送采购订单。\n事后可利用报告分析供应商的质量。\n\n\n电子邮件集成\n------------------\n\n整合采购订单（或 RfQs）上的所有供应商通信，以获得\n对谈判或售后服务问题进行强有力的跟踪。使用\n索赔管理模块来跟踪与供应商相关的问题。\n\n标准价格、平均价格、先进先出\n-----------------------------------\n\n使用能反映您业务的成本计算方法：标准价格、平均价格、先进先出\n价格、先进先出或后进先出。实时获得会计分录和正确的库存\n实时估价；ERP 为您透明地管理一切。\n\n导入供应商价目表\n--------------------------\n\n使用最佳价格做出明智的采购决策。  轻松导入供应商的\n价目表，根据促销、数量价格和特殊合同条件做出更明智的采购决策。\n数量和特殊合同条件做出更明智的采购决策。您甚至可以根据供应商的\n销售价格取决于供应商的价格。\n\n控制产品和发票\n-----------------------------\n\n不遗漏任何产品或订单，库存控制可让您管理\n退货、退款、产品接收和质量控制。根据需要选择正确的\n控制方法。\n\n轻松控制供应商账单。根据需要选择正确的方法\n根据您的需要选择合适的方法：根据采购订单、产品\n接收、手动创建发票以及从采购订单中导入项目、\n等等。\n\n"}, {"id": 368, "name": "project", "summary": "组织和规划您的项目", "author": "Odoo S.A.", "shortdesc": "项目", "description": "项目管理\n------------------\n\n### 无限灵活。难以置信的易用性。\n\n\nERP 的协作式实时<a href=\"https://www.odoo.com/app/project\">开源项目管理</a>\n帮助您的团队完成工作。跟踪一切，从大局\n到细枝末节，从客户合同到账单。\n\n设计适合您自己的流程\n--------------------------------\n\n围绕自己的流程组织项目。使用看板视图处理任务和问题\n看板视图处理任务和问题，使用甘特图安排任务，并在\n日历视图。每个项目都可以有自己的阶段，让团队\n优化他们的工作。\n\n易于使用\n-----------\n\n以最快的速度进行整理。简单易用的界面无需花时间学习\n学习，而且每个操作都是即时的，因此没有任何东西会阻挡你的\n你的工作效率。\n\n协同工作\n-------------\n\n### 实时聊天、文档共享、电子邮件集成\n\n使用聊天工具与团队或客户沟通，并就任务和问题共享意见\n和文档。与电子邮件\n集成。\n\n使用网站即时聊天功能与其他用户或客户交谈。\n\n协作写作\n---------------------\n\n### etherpad 的强大功能，尽在您的任务中\n\n在应用程序内协作编辑相同的规格或会议记录\n应用程序内协作编辑相同的规格或会议记录。集成的 etherpad 功能允许多人\n同时处理相同的任务。\n\n这对于 Scrum 会议、会议记录或复杂的\n规格。每个用户都有自己的颜色，还可以重放内容创建的整个过程。\n创建内容。\n\n完成工作\n-------------\n\n获取关注事件的提醒，了解您感兴趣的最新信息。使用\n即时的绿色/红色可视化指示器来浏览已完成的工作和需要您关注的工作。\n需要您关注的内容。\n\n时间表、合同和发票\n---------------------------------\n\n项目与客户合同自动集成，使您可以\n根据时间和材料开具发票，并轻松记录工时单。\n\n跟踪问题\n------------\n\n找出项目中出现的问题，以便更好地重点\n解决这些问题。整合每个问题上的客户互动，并获得\n团队绩效的准确报告.\n\n"}, {"id": 567, "name": "website_sale", "summary": "在线销售产品", "author": "Odoo S.A.", "shortdesc": "电子商务", "description": "ERP 电子商务\n---------------\n\n### 通过出色的在线商店优化销售。\n\nERP 是一款<a href=\"https://www.odoo.com/app/ecommerce\">开放源码电子商务</a>软件。\n与您以前见过的任何产品都不同。获取超棒的产品目录\n和出色的产品描述页面。\n\n它功能齐全，与您的管理软件集成，可完全\n可定制且超级简单。\n\n创建出色的产品页面\n----------------------------\n\nERP 独特的*\"内联编辑 \"*和积木式方法使产品页面\n变得出奇的简单。\"想更改产品价格？\n加粗？想为特定产品添加横幅吗？\"只需点击并更改即可。\n所见即所得。真的\n\n拖放精心设计的*'积木'*，创建美观的产品\n页面，让您的客户爱不释手。\n\n增加每笔订单的收入\n-------------------------------\n\n内置的交叉销售功能可帮助您提供与购物车中的产品\n购物车中的产品。(例如配件）\n\n通过 ERP 的追加销售算法，您可以向访问者展示类似但比当前浏览的\n的产品，并提供奖励。\n\n通过内嵌编辑功能，您可以轻松更改价格、启动促销或微调产品描述。\n促销或微调产品描述。\n\n简洁的谷歌分析集成\n------------------------------------\n\n清楚了解您的销售漏斗。ERP 的 Google Analytics 跟踪器\n默认配置为跟踪与购物车、呼叫转移等相关的所有事件。\n购物车、呼叫转移等相关事件。\n\n由于 ERP 营销工具（群发邮件、营销活动等）也与\nGoogle Analytics 相链接，因此您可以全面了解您的业务。\n\n锁定新市场\n------------------\n\n轻松将您的网站翻译成多种语言。ERP \n并自动在页面间传播翻译。\n\n我们的 \"按需 \"翻译功能可让您受益于专业\n翻译人员自动翻译您的所有更改。只需更改网站的任何部分\n您网站的任何部分（新博文、页面修改、产品描述......），翻译版本将在 32 小时内自动更新、\n......），翻译版本将在 32 小时内自动更新。\n\n微调您的目录\n----------------------\n\n完全控制如何在目录页面中显示您的产品：\n促销色带、相关产品尺寸、折扣、变体、网格/列表\n视图等。\n\n在线编辑任何产品，使您的网站与客户需求同步发展。\n\n获取新客户\n---------------------\n\n搜索引擎优化工具即开即用，无需配置。ERP \n关键词，谷歌分析跟踪您的\n购物车事件，为 Google 索引自动创建网站地图、\n等等。\n\n我们甚至会自动生成结构化内容，以便在谷歌中高效推广您的产品和活动。\n在谷歌中有效推广您的产品和活动。\n\n利用社交媒体\n---------------------\n\n使用 ERP 的内联编辑功能轻松创建新的登陆页面。将\n将不同营销活动的访客发送到特定的登陆页面，以优化转化率。\n优化转化率。\n\n管理经销商网络\n-------------------------\n\n管理分销商网络，瞄准新市场，在当地开展业务或扩大分销范围。\n分销。让他们访问您的经销商门户网站，实现高效\n合作。\n\n在线推广您的经销商，将潜在客户转给经销商（内置\n地理定位功能）、定义特定价目表、启动忠诚度计划\n(向您的最佳客户或经销商提供特定折扣）等。\n\n从 ERP 的强大功能中获益：强大的税务引擎、\n灵活的定价结构、真正的库存管理解决方案、经销商界面\n支持不同行为的产品；实物商品、活动、服务、变体和选项、\n活动、服务、变体和选项等。\n\n您无需连接仓库、销售或会计软件。\n一切都与 ERP 集成。无痛苦，实时。\n\n简洁的结账流程\n------------------------\n\n通过简洁的结账流程，将大多数访客的兴趣转化为实际订单\n步骤最少，每个页面都非常实用。\n\n自定义您的结账流程，以满足您的业务需求：付款模式、送货方式、交叉销售、特殊条件等、\n配送方式、交叉销售、特殊条件等。\n\n还有更多...\n----------------\n\n### 在线销售\n\n-   移动界面\n-   销售产品、活动或服务\n-   灵活的价格表\n-   产品多变量\n-   多个商店\n-   出色的结账流程\n\n### 客户服务\n\n-   客户门户跟踪订单\n-   通过网站即时聊天协助购物\n-   退货管理\n-   高级发货规则\n-   优惠券或礼券\n\n###订单管理\n\n-   高级仓库管理功能\n-   发票和会计集成\n-   邮件群发和客户细分\n-   线索自动化和营销活动\n-   持久购物车\n\n与其他应用程序完全集成\n--------------------------------\n\n### 内容管理系统\n\n无需任何技术知识，即可轻松创建出色的网站。\n\n### 博客\n\n撰写新闻，吸引新访客，建立客户忠诚度。\n\n### 在线活动\n\n安排、组织、推广或销售在线活动；会议、网络研讨会、培训等.\n\n"}, {"id": 296, "name": "mrp", "summary": "制造单和物料清单", "author": "Odoo S.A.", "shortdesc": "制造", "description": "ERP 制造资源规划\n------------------------------------\n\n使用 ERP 开源 MRP 应用程序管理物料清单、计划制造订单、跟踪工单。\nERP <a href=\"https://www.odoo.com/app/manufacturing\">开源 MRP</a>应用程序。\n\n使用 ERP 管理您的所有装配或制造业务。自动安排\n制造订单和工单。通过智能看板和甘特图\n计划。使用高级分析\n功能来检测资源能力和库存位置的瓶颈。\n\n高效安排制造订单\n-----------------------------------------\n\n根据您的\n采购规则、预测数量和从属需求（基于另一部件消耗该部件的需求\n基于另一个零件消耗该零件的需求）。\n\n定义灵活的主数据\n---------------------------\n\n灵活创建多级物料清单、可选路由、\n版本更改和幽灵物料清单。您可以将物料清单用于套件或\n制造订单。\n\n在所有作业中获得灵活性\n---------------------------------\n\n在任何进度级别手动编辑所有建议的作业。有了 ERP 、\n您将不会因僵化的系统而感到沮丧。\n\n安排工单\n--------------------\n\n检查资源能力，解决瓶颈问题。  定义路线并计划\n工作时间和资源能力。快速确定资源\n需求和瓶颈，以确保您的制造符合交货计划日期。\n计划日期。\n\n\n高效的用户界面\n---------------------------\n\n以您喜欢的方式组织制造订单和工单。处理下一个\n在列表视图中处理下一个订单，在日历视图中进行控制，并在甘特图视图中编辑建议的时间表。\n计划。\n\n\n库存与制造分析\n-----------------------------------\n\n根据制造活动的水平，跟踪库存价值的变化情况。\n活动在转型过程中的进展情况。\n\n与运营完全集成\n--------------------------------\n\n通过与销售和采购应用程序的完全集成，使您的制造资源计划准确无误。\n与销售和采购应用程序的全面集成，使您的制造资源规划更加准确。会计集成允许实时\n会计估价和更深入的成本和收入报告。\n制造业务.\n\n"}, {"id": 78, "name": "hr_holidays", "summary": "分配 PTO 和跟踪请假申请", "author": "Odoo S.A.", "shortdesc": "休息时间", "description": "\n管理休假申请和假期分配\n=====================================\n\n此应用会控制公司的休假安排。允许员工的休假申请。管理人员可以审查休假请求，批准或拒绝。通过这种方式可以控制公司或部门的整体休假计划。\n\n可以配置几种休假(病假、带薪休假 ，...)，并通过假期分配快速地将假期分配给员工或部门。员工也可通过创建假期分配申请增加休假天数。这将会增加该休假类型的总可用天数(如果申请得到批准。\n\n 您可以通过以下报告跟踪不同类型的休假：\n\n* 休假摘要\n* 按部门休假\n* 休假分析\n\n内部日程(CRM模块中的会议)同步也是可以的，通过设置休假类型，在批准休假时自动创建一个会议。\n\n"}, {"id": 72, "name": "hr", "summary": "集中管理员工信息", "author": "Odoo S.A.", "shortdesc": "员工", "description": "ERP 人力资源\n--------------------\n\n使用 ERP <a href=\"https://www.odoo.com/app/employees\">人力资源</a>、\n管理公司最重要的资产：人员\n\n轻松管理所有人力资源业务：知识共享、招聘、考核、考勤表、合同、出勤、薪资等、\n考核、考勤表、合同、考勤、薪资等。\n\n每种需求都由一个特定的应用程序提供，您可以按需激活。\n\n管理您的员工\n---------------------\n\n管理公司通讯录中的所有重要信息。有些信息\n信息仅限于人力资源经理，其他信息则公开，方便查找\n同事。\n\n记录员工合同，并在需要续签时收到提醒。\n\n简化招聘流程\n-----------------------------------\n\n使用<a href=\"https://www.odoo.com/app/employees\">ERP  HR</a> 索引简历、跟踪申请人、搜索个人资料。\n\n发布招聘信息，跟踪收到的每份申请。通过智能看板视图\n智能看板视图。\n\n使用电子邮件模板自动进行某些沟通，节省时间。简历\n自动编入索引，让您轻松查找特定资料。\n\n企业社交网络\n-------------------------\n\n打破信息孤岛。在所有员工之间分享知识和最佳实践\n员工之间分享知识和最佳实践。关注特定人员或文件，加入兴趣小组，以\n分享专业知识和文件。\n\n通过网站即时聊天与同事实时互动。\n\n跟踪时间和出席情况\n--------------------------\n\n按项目、客户或任务记录所用时间。轻松记录\n时间表或检查每位员工的出勤情况。根据项目花费的时间\n根据项目花费的时间自动发布。\n\n休假管理\n-----------------\n\n记录每位员工累积的假期天数。员工输入他们的\n请假申请（带薪休假、病假等），供经理批准和验证。\n确认。这一切只需点击几下即可完成。每位员工的日程都会\n相应更新。\n\n跟踪员工支出\n-------------------------------\n\n摆脱纸质工作，直接在 ERP 中跟踪员工支出。\n通过控制整个流程：费用确认、员工报销、会计入账和重新开票，避免浪费时间和金钱、\n员工报销、会计入账以及向客户重新开具发票。\n客户。\n\n跟踪定期评估\n--------------------------\n\n为员工制定评估计划和/或调查，观察他们的\n演变。定义面试步骤，ERP 会自动通知经理或\n自动通知经理或下属准备考核。定期跟踪\n定期跟踪员工的进步。\n\n通过游戏化提高参与度\n----------------------------------\n\n### 明确目标，提供实时反馈\n\n通过挑战、目标和奖励激发成就感。确定明确的目标\n并提供实时反馈和切实成果。向整个渠道展示\n向整个渠道展示表现最出色的人员，并公开表彰出色完成任务的人员。\n\n###排行榜\n\n通过业绩比率在销售团队中提升领导力和竞争性。\n\n###个人目标\n\n为用户指定明确的目标，使其与公司目标保持一致。\n\n### 团队目标\n\n实时比较收入与预测和预算.\n\n"}, {"id": 612, "name": "hr_payroll_community", "summary": "Odoo 17 HR Payroll, payroll, Odoo17 Payroll, Odoo Payroll, Payroll, Odoo17 Payslips, Employee Payroll, HR Payroll,Odoo17, Odoo17 HR, odoo hr,odoo17, Accounting,Odoo Apps", "author": "Cybrosys Techno Solutions", "shortdesc": "Odoo 17 HR Payroll", "description": "odoo17, Odoo 17 HR Payroll, odoo payroll, odoo17 payroll, payroll community,odoo 17, payroll,Odoo 17 Payroll for Community version where can manage Employee Payroll Records"}, {"id": 279, "name": "maintenance", "summary": "跟踪设备并管理维护申请", "author": "Odoo S.A.", "shortdesc": "维护", "description": "\n跟踪设备和维护申请"}, {"id": 659, "name": "weixin_payment_base", "summary": "用于连接微信支付模块", "author": "qzcpl", "shortdesc": "微信支付模块", "description": ""}, {"id": 274, "name": "mail", "summary": "聊天、邮件代理和私人通道", "author": "Odoo S.A.", "shortdesc": "讨论", "description": "\n\nChat, mail gateway and private channel.\n=======================================\n\nCommunicate with your colleagues/customers/guest within Odoo.\n\nDiscuss/Chat\n------------\nUser-friendly \"Discuss\" features that allows one 2 one or group communication\n(text chat/voice call/video call), invite guests and share documents with\nthem, all real-time.\n\nMail gateway\n------------\nSending information and documents made simplified. You can send emails\nfrom Odoo itself, and that too with great possibilities. For example,\ndesign a beautiful email template for the invoices, and use the same\nfor all your customers, no need to do the same exercise every time.\n\nChatter\n-------\nDo all the contextual conversation on a document. For example on an\napplicant, directly post an update to send email to the applicant,\nschedule the next interview call, attach the contract, add HR officer\nto the follower list to notify them for important events(with help of\nsubtypes),...\n\n\nRetrieve incoming email on POP/IMAP servers.\n============================================\nEnter the parameters of your POP/IMAP account(s), and any incoming emails on\nthese accounts will be automatically downloaded into your Odoo system. All\nPOP3/IMAP-compatible servers are supported, included those that require an\nencrypted SSL/TLS connection.\nThis can be used to easily create email-based workflows for many email-enabled Odoo documents, such as:\n----------------------------------------------------------------------------------------------------------\n    * CRM Leads/Opportunities\n    * CRM Claims\n    * Project Issues\n    * Project Tasks\n    * Human Resource Recruitment (Applicants)\nJust install the relevant application, and you can assign any of these document\ntypes (Leads, Project Issues) to your incoming email accounts. New emails will\nautomatically spawn new documents of the chosen type, so it's a snap to create a\nmailbox-to-Odoo integration. Even better: these documents directly act as mini\nconversations synchronized by email. You can reply from within Odoo, and the\nanswers will automatically be collected when they come back, and attached to the\nsame *conversation* document.\nFor more specific needs, you may also assign custom-defined actions\n(technically: Server Actions) to be triggered for each incoming mail.\n"}, {"id": 46, "name": "contacts", "summary": "集中管理地址簿", "author": "Odoo S.A.", "shortdesc": "联系人", "description": "\n该模块可以让您通过访问主页快速查看联系人目录。\n您可以跟踪您的供应商、客户和其他联系人。\n"}, {"id": 44, "name": "calendar", "summary": "安排员工会议", "author": "Odoo S.A.", "shortdesc": "日历", "description": "\n这是一个功能齐全的日历系统。\n========================================\n\n它支持\n------------\n    - 事件日历\n    - 定期活动\n\n如果需要管理会议，则应安装 CRM 模块。\n"}, {"id": 104, "name": "im_livechat", "summary": "与您网站的访问者进行聊天", "author": "Odoo S.A.", "shortdesc": "在线聊天", "description": "\n即时聊天支持\n==========================\n\n允许在任何网页上放置即时信息小工具，这些小工具将与当前服务器进行通信，并将游客的请求分派到多个即时聊天工具中。\n与当前服务器通信，并将游客请求分派给多个即时\n聊天操作员。\n通过该聊天工具帮助您的客户，并分析他们的反馈。\n\n"}, {"id": 377, "name": "project_todo", "summary": "用备忘录和待办清单安排工作", "author": "Odoo S.A.", "shortdesc": "待办", "description": ""}, {"id": 89, "name": "hr_skills", "summary": "管理员工的技能、知识和简历", "author": "Odoo S.A.", "shortdesc": "技能管理", "description": "\n人力资源技能和简历\n========================\n\n本模块介绍员工技能和简历管理。\n"}, {"id": 74, "name": "hr_contract", "summary": "", "author": "Odoo S.A.", "shortdesc": "员工合同", "description": "\n在员工表单上添加所有信息，以管理合同。\n=============================================================\n\n    * 合同\n    * 出生地\n    * 体检日期\n    * 公司车辆\n\n您可以为每位员工分配多个合同。\n"}, {"id": 619, "name": "accounting_pdf_reports", "summary": "Accounting Reports For Odoo 17", "author": "Odoo Mates, Odoo SA", "shortdesc": "Odoo 17 Accounting Financial Reports", "description": "Accounting Reports For Odoo 17, Accounting Financial Reports, Odoo 17 Financial Reports"}, {"id": 608, "name": "cust_payment_zfb", "summary": "Alipay of payment provider", "author": "zizle", "shortdesc": "支付宝支付", "description": "\n1、启用本模块之前，先到models/payment_provider.py最后3个方法函数，修改对应的环境的url，才能正式使用。\n\n2、启用电子商务后，网站使用的支付宝支付。\n\n3、本模块依据官方支付流程修改。适配了当前支付宝支付。\n\n4、通过沙箱测试。\n"}, {"id": 625, "name": "om_fiscal_year", "summary": "Odoo 17 Fiscal Year, Fiscal Year in Odoo 17, Lock Date in Odoo 17", "author": "Odoo Mates, Odoo SA", "shortdesc": "Odoo 17 Fiscal Year & Lock Date", "description": "Odoo 17 Fiscal Year, Fiscal Year in Odoo 17"}, {"id": 51, "name": "crm_mail_plugin", "summary": "将邮箱中收到的电子邮件转化为线索，并将其内容记录为内部备注。", "author": "Odoo S.A.", "shortdesc": "CRM 邮件插件", "description": "将邮箱中收到的电子邮件转化为线索，并将其内容记录为内部备注。"}, {"id": 278, "name": "mail_plugin", "summary": "允许与邮件插件集成。", "author": "Odoo S.A.", "shortdesc": "邮件插件", "description": "将 ERP 与邮箱整合，直接在邮箱中获取联系人信息，将邮件日志内容记录为内部备注"}, {"id": 371, "name": "project_mail_plugin", "summary": "将收件箱与项目整合", "author": "Odoo S.A.", "shortdesc": "项目邮件插件", "description": "将邮箱中收到的电子邮件转化为任务，并将其内容记录为内部备注。"}, {"id": 621, "name": "om_account_asset", "summary": "Odoo 17 Assets Management", "author": "Odoo Mates, Odoo SA", "shortdesc": "Odoo 17 Assets Management", "description": "Manage assets owned by a company or a person. \n        Keeps track of depreciation's, and creates corresponding journal entries"}, {"id": 622, "name": "om_account_budget", "summary": "Odoo 17 Budget Management", "author": "Odoo Mates, Odoo SA", "shortdesc": "Odoo 17 Budget Management", "description": "Use budgets to compare actual with expected revenues and costs"}, {"id": 623, "name": "om_account_daily_reports", "summary": "Cash Book, Day Book and Bank Book Report For Odoo 17", "author": "Odoo Mates", "shortdesc": "Cash Book, Day Book, Bank Book Financial Reports", "description": "Cash Book, Day Book and Bank Book Report For Odoo 17"}, {"id": 626, "name": "om_recurring_payments", "summary": "Use recurring payments to handle periodically repeated payments", "author": "Odoo Mates", "shortdesc": "Odoo 17 Recurring Payment", "description": "Odoo 17 Recurring Payment, Recurring Payment In Odoo, Odoo 17 Accounting"}, {"id": 434, "name": "stock_account", "summary": "库存、物流、估值、会计", "author": "Odoo S.A.", "shortdesc": "仓库管理会计", "description": "\nWMS 会计模块\n======================\n该模块在 \"库存 \"和 \"账户 \"模块之间建立联系，允许您创建会计分录，对库存变动进行估值\n\n主要功能\n------------\n* 库存估价（定期或自动）\n* 采摘发票\n\n仓库管理仪表板/报告包括\n------------------------------------------------------\n* 给定日期的库存价值（支持过去的日期）\n"}, {"id": 92, "name": "hr_timesheet", "summary": "跟踪员工执行任务的时间", "author": "Odoo S.A.", "shortdesc": "任务日志", "description": "\n该模块实现了一个时间表系统。\n==========================================\n\n每位员工都可以对自己在不同项目上花费的时间进行编码和跟踪。\n\n提供大量时间报告和员工跟踪。\n\n它与成本会计模块完全集成。它允许你设置\n事务管理。\n"}, {"id": 530, "name": "website_crm", "summary": "通过联系表单生成线索", "author": "Odoo S.A.", "shortdesc": "联系表单", "description": "\n为您的网站表单添加功能，以便在 CRM 应用程序中生成线索或机会。\n必须在*网站生成器*中对表单进行自定义，才能生成线索。\n\n该模块包括联系人电话和手机号码验证。"}, {"id": 534, "name": "website_crm_sms", "summary": "允许向具有线索的网站访问者发送短信", "author": "Odoo S.A.", "shortdesc": "向有线索的访客发短信", "description": "若网站访客链接到一个线索允许向其发送短信。"}, {"id": 582, "name": "website_sms", "summary": "允许向网站访客发送短信", "author": "Odoo S.A.", "shortdesc": "向访客发短信", "description": "如果网站访问者与合作伙伴有链接，则允许向该访问者发送短信。"}, {"id": 384, "name": "purchase_stock", "summary": "采购订单、收据、供应商库存账单", "author": "Odoo S.A.", "shortdesc": "采购库存", "description": ""}, {"id": 641, "name": "udoo_om_ux", "summary": "Refined Odoo UX with start menu, dual-tier sidebar navigation, bookmark manager, recent views, split list view, quick pop-up view, global search, dark mode, prebuilt color palette, open in new tab, switch language, RTL support, flexible chatter, sticky header, web sheet full width, group fold unfold, fullscreen form view, report action icon, optimized multi-line, interactive sortable, stunning graph view, kanban view, responsive mobile, dynamic layout, sign up login design, history activities, language selection, support RTL, dual page, multipurpose, required input, Ukrainian, Arabic, Spanish, Vietnamese, multilingual, enterprise color theme, enterprise theme, Right-To-Left, WCAG22, RTLCSS", "author": "Jupetern", "shortdesc": "Om Backend Community Theme", "description": ""}, {"id": 642, "name": "udoo_om_ux_metronic", "summary": "Refined Odoo UX with metronic design, start menu, dual-tier sidebar navigation, bookmark manager, recent views, split list view, quick pop-up view, global search, dark mode, prebuilt color palette, open in new tab, switch language, RTL support, flexible chatter, sticky header, web sheet full width, group fold unfold, fullscreen form view, report action icon, optimized multi-line, interactive sortable, stunning graph view, kanban view, responsive mobile, dynamic layout, sign up login design, history activities, language selection, support RTL, dual page, multipurpose, required input, Ukrainian, Arabic, Spanish, Vietnamese, multilingual, enterprise color theme, enterprise theme, Right-To-Left, WCAG22, RTLCSS", "author": "Jupetern", "shortdesc": "Metronic Community Theme Preset", "description": ""}, {"id": 3, "name": "account_check_printing", "summary": "支票打印基础功能", "author": "Odoo S.A.", "shortdesc": "支票打印基础", "description": "\n该模块提供通过打印支票进行支付的基本功能。\n它必须作为提供特定国家支票模板的模块的附属模块。\n支票设置位于会计日记账配置页面。\n"}, {"id": 7, "name": "account_edi_ubl_cii", "summary": "", "author": "Odoo S.A.", "shortdesc": "使用 UBL/CII 导入/导出电子发票", "description": "\n电子发票模块\n===========================\n\n允许导出和导入格式：E-FFF、UBL Bis 3、EHF3、NLCIUS、Factur-X (CII)、XRechnung (UBL)。\n在发票上生成 PDF 时，PDF 将嵌入所有 UBL 格式的 xml 中。这使得\n接收方仅需 xml 文件即可检索 PDF。请注意，**EHF3 已通过 UBL Bis 3**（`参考\n<https://anskaffelser.dev/postaward/g3/spec/current/billing-3.0/norway/#_implementation>`_）。\n\n可从与发票链接的日记账（日记账 > 高级设置）中选择格式。\n\n请注意，E-FFF、NLCIUS 和 XRechnung (UBL) 仅适用于比利时、荷兰和德国公司、\n分别适用于比利时、荷兰和德国公司。UBL Bis 3 仅适用于国家在 \"EAS 列表 \"中的公司。\n<https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/>`_.\n\n还请注意，为了使 Chorus Pro 自动检测 \"PDF/A-3 (Factur-X) \"格式，您需要激活\nFactur-X PDF/A-3 \"选项。该选项还将根据 Factur-X 和 Chorus\nPro 规则验证 xml 并显示错误。\n"}, {"id": 10, "name": "account_payment", "summary": "让客户能够在门户网站上支付发票，并在交易处理完毕后过账。", "author": "Odoo S.A.", "shortdesc": "付款 - 会计", "description": ""}, {"id": 11, "name": "account_payment_term", "summary": "", "author": "Odoo S.A.", "shortdesc": "支付条款 - 月底天数", "description": "\n桥接模块，以添加新的付款期限 - （x天在月底，在x）\n"}, {"id": 651, "name": "aliyun_sms_base", "summary": "用于连接阿里云短信服务", "author": "qzcpl", "shortdesc": "阿里云短信对接模块", "description": ""}, {"id": 17, "name": "analytic", "summary": "", "author": "Odoo S.A.", "shortdesc": "分析会计", "description": "\n用于定义分析会计对象的模块。\n===============================================\n\n在 ERP 中，分析账户与普通账户有关联，但完全独立处理。\n完全独立。SO 因此，您可以输入各种不同的分析操作\n在一般财务账户中没有对方的账户.\n"}, {"id": 24, "name": "auth_signup", "summary": "", "author": "Odoo S.A.", "shortdesc": "注册", "description": "\n允许用户注册和重置密码\n===============================================\n"}, {"id": 25, "name": "auth_totp", "summary": "", "author": "Odoo S.A.", "shortdesc": "双重验证（TOTP）", "description": "\n双因素身份验证 (TOTP)\n================================\n允许用户在其用户账户上配置双因素身份验证，使用基于时间的一次性密码 ，以提高安全性。\n使用基于时间的一次性密码 (TOTP)，以提高安全性。\n\n启用后，用户需要输入验证器应用程序提供的 6 位数代码，然后才能获得授权。\n验证器应用程序提供的 6 位数代码，然后才能获准访问系统。\n支持所有流行的认证程序。\n\n注意：从逻辑上讲，启用双因素后，用户将无法通过密码访问 RPC。\n基于密码的 RPC 访问。为了能执行 RPC 脚本，用户\n可以设置 API 密钥来代替主密码.\n"}, {"id": 26, "name": "auth_totp_mail", "summary": "", "author": "Odoo S.A.", "shortdesc": "2FA 邀请邮件", "description": "\n2FA 邀请邮件\n===============\n允许用户通过向目标用户发送电子邮件，邀请其他用户使用双因素身份验证\n向目标用户发送电子邮件。这封邮件会重定向到\n- 用户安全设置（如果用户是内部用户）。\n- 门户安全设置页面（如果用户不是内部用户）。\n"}, {"id": 28, "name": "auth_totp_portal", "summary": "", "author": "Odoo S.A.", "shortdesc": "TOTPortal", "description": ""}, {"id": 29, "name": "barcodes", "summary": "扫描和解析条形码", "author": "Odoo S.A.", "shortdesc": "条形码", "description": ""}, {"id": 30, "name": "barcodes_gs1_nomenclature", "summary": "根据 GS1-128 规范解析条形码", "author": "Odoo S.A.", "shortdesc": "条形码 - GS1 术语", "description": ""}, {"id": 31, "name": "base", "summary": "", "author": "Odoo S.A.", "shortdesc": "基础", "description": "\n 所有安装均需要 ERP 的内核。\n===================================================\n"}, {"id": 36, "name": "base_import", "summary": "", "author": "Odoo S.A.", "shortdesc": "基础导入", "description": "\nERP 中新的可扩展文件导入\n======================================\n\nERP  新的文件导入：\n\n* 服务器端，之前的系统将大多数逻辑强加到客户端，此操作加倍了工作量(客户端之间)，使没有客户端(直接RPC或其他形式的自动化)的知识导入系统更难使用，并且更难以收集，因为它覆盖了3个以上不同的项目。\n\n* so 因此，通过更多的可扩展方式，用户和合作伙伴可以创建自己的前端，以便从其他的文件格式中进行导入(例如，OpenDocument文档)，这使得工作流程或数据生产源中的处理变得更简单。\n\n* so 因此，在模块中，不需要或不想要在线上导入可用的 ERP 管理员和用户可避免用户使用在线导入.\n"}, {"id": 37, "name": "base_import_module", "summary": "", "author": "Odoo S.A.", "shortdesc": "导入模块", "description": "\n导入自定义数据模块\n===========================\n这个模块允许授权用户导入自定义数据模块（.xml文件和静态资产）\n定制的目的。\n"}, {"id": 38, "name": "base_install_request", "summary": "", "author": "Odoo S.A.", "shortdesc": "基础 - 模块安装申请", "description": "\n允许内部用户申请安装模块\n=====================================================\n"}, {"id": 39, "name": "base_setup", "summary": "", "author": "Odoo S.A.", "shortdesc": "初始化安装工具", "description": "\n该模块有助于在安装新数据库时配置系统。\n================================================================================\n\n显示可安装的应用程序功能列表。\n\n"}, {"id": 40, "name": "base_sparse_field", "summary": "稀疏字段的实现", "author": "Odoo S.A.", "shortdesc": "稀疏领域", "description": "\n该模块的目的是实现 \"稀疏 \"字段，即大部分为空的字段。\n大部分为空。这种实现规避了 PostgreSQL\n对表中列数量的限制。所有稀疏\n字段的值都以 JSON 映射的形式存储在一个 \"序列化 \"字段中。\n"}, {"id": 43, "name": "bus", "summary": "", "author": "Odoo S.A.", "shortdesc": "IM总线", "description": "您可以通过即时消息总线给用户发送在线即时信息，类似QQ，但限于系统的web框架内。"}, {"id": 45, "name": "calendar_sms", "summary": "发送短信作为活动提醒", "author": "Odoo S.A.", "shortdesc": "日历 - 短信", "description": "发送短信作为活动提醒"}, {"id": 48, "name": "crm_iap_enrich", "summary": "使用电子邮件地址域名补充线索/商机", "author": "Odoo S.A.", "shortdesc": "线索补全", "description": ""}, {"id": 49, "name": "crm_iap_mine", "summary": "根据国家、行业、规模等生成信息/机会。", "author": "Odoo S.A.", "shortdesc": "线索开发", "description": ""}, {"id": 50, "name": "crm_livechat", "summary": "从实时聊天会话创建线索", "author": "Odoo S.A.", "shortdesc": "客户关系管理即时聊天", "description": "在通道中使用 /lead 命令创建新的线索"}, {"id": 52, "name": "crm_sms", "summary": "在CRM中添加短信功能", "author": "Odoo S.A.", "shortdesc": "客户关系管理中的短信", "description": ""}, {"id": 609, "name": "cust_website_login", "summary": "add phone to user model for login", "author": "zizle", "shortdesc": "网站手机号登录", "description": "\n修改原生的【邮件】登录和注册为【手机号】登录注册。\n"}, {"id": 661, "name": "dayu_software_structure", "summary": "software_structure", "author": "qzcpl", "shortdesc": "软件结构", "description": "\n1、显示所有已安装的模块。\n\n2、显示所有模型。\n\n3、显示所有模型的字段属性和方法\n\n"}, {"id": 54, "name": "delivery", "summary": "", "author": "Odoo S.A.", "shortdesc": "配送成本", "description": "\n允许您在销售订单中添加送货方式。\n==================================================\n您可以定义自己的价格承运人。\n系统能够添加和计算运输线路。\n"}, {"id": 57, "name": "digest", "summary": "", "author": "Odoo S.A.", "shortdesc": "关键绩效指标摘要", "description": "\n定期发送 KPI 摘要\n=============================\n"}, {"id": 67, "name": "gamification_sale_crm", "summary": "", "author": "Odoo S.A.", "shortdesc": "游戏化 CRM", "description": "使用的规定目标与挑战的示例，这可以用来关联到CRM销售模块进行使用。"}, {"id": 71, "name": "google_recaptcha", "summary": "", "author": "Odoo S.A.", "shortdesc": "Google 验证码集成", "description": "\n该模块实现了 reCaptchaV3，因此可以防止公共模块上出现僵尸垃圾邮件。\n"}, {"id": 77, "name": "hr_gamification", "summary": "", "author": "Odoo S.A.", "shortdesc": "游戏化", "description": "将 HR 资源用于游戏化过程。\n\n人力资源专员现在可以管理挑战和徽章。\n这使得用户可以向员工（而非简单用户）发送徽章。\n收到的徽章显示在用户个人资料中。\n"}, {"id": 81, "name": "hr_hourly_cost", "summary": "雇员小时工资", "author": "Odoo S.A.", "shortdesc": "雇员小时工资", "description": "\n该模块为员工分配小时工资，供其他模块使用。\n============================================================================\n\n"}, {"id": 82, "name": "hr_livechat", "summary": "", "author": "Odoo S.A.", "shortdesc": "人力资源 - 即时聊天", "description": "\n人力资源和 Livechat 之间的桥梁。"}, {"id": 84, "name": "hr_org_chart", "summary": "", "author": "Odoo S.A.", "shortdesc": "HR人力资源部组织结构图", "description": "\n人力资源组织结构图小工具\n=======================\n\n该模块通过组织结构图扩展雇员表单。\n(N+1、N+2、直接下属）\n"}, {"id": 101, "name": "iap", "summary": "支持应用内采购的基本模型和助手。", "author": "Odoo S.A.", "shortdesc": "应用内采购", "description": "\n该模块提供标准工具 (账户模型、上下文管理员和助手)\n以支持 ERP 内的应用内采购."}, {"id": 102, "name": "iap_crm", "summary": "IAP 与 CRM 之间的桥梁", "author": "Odoo S.A.", "shortdesc": "IAP / CRM", "description": "IAP 与 CRM 之间的桥梁"}, {"id": 103, "name": "iap_mail", "summary": "IAP 与邮件之间的桥梁", "author": "Odoo S.A.", "shortdesc": "IAP / 邮件", "description": "IAP 与邮件之间的桥梁"}, {"id": 105, "name": "im_livechat_mail_bot", "summary": "为 OdooBot 添加即时聊天支持", "author": "Odoo S.A.", "shortdesc": "用于即时聊天的 OdooBot", "description": ""}, {"id": 643, "name": "inventory_stock_dashboard_odoo", "summary": "Detailed dashboard view for Inventory module.", "author": "Cybrosys Techno Solutions", "shortdesc": "Inventory Dashboard Odoo 17", "description": "This module presents a detailed dashboard view for the\n    Inventory module, delivering a compr    ehensive and concise overview that\n    serves as a valuable tool for both inventory users and administrators."}, {"id": 133, "name": "l10n_cn", "summary": "", "author": "openerp-china", "shortdesc": "中国 - 会计", "description": "\nIncludes the following data for the Chinese localization\n========================================================\n\nAccount Type/科目类型\n\nState Data/省份数据\n\n    科目类型\\会计科目表模板\\增值税\\辅助核算类别\\管理会计凭证簿\\财务会计凭证簿\n\n    添加中文省份数据\n\n    增加小企业会计科目表\n\n    修改小企业会计科目表\n\n    修改小企业会计税率\n\n    增加大企业会计科目表\n\nWe added the option to print a voucher which will also\nprint the amount in words (special Chinese characters for numbers)\ncorrectly when the cn2an library is installed. (e.g. with pip3 install cn2an)\n"}, {"id": 271, "name": "link_tracker", "summary": "", "author": "Odoo S.A.", "shortdesc": "链接跟踪器", "description": "\n缩短URL并使用它们来跟踪点击和UTMs\n"}, {"id": 272, "name": "loyalty", "summary": "在不同销售渠道使用折扣、礼品卡、电子钱包和忠诚度计划", "author": "Odoo S.A.", "shortdesc": "优惠券 & 会员", "description": ""}, {"id": 275, "name": "mail_bot", "summary": "在讨论中添加 OdooBot", "author": "Odoo S.A.", "shortdesc": "OdooBot", "description": ""}, {"id": 276, "name": "mail_bot_hr", "summary": "hr 和 mailbot 之间的桥梁模块。", "author": "Odoo S.A.", "shortdesc": "OdooBot - 人力资源", "description": "该模块在hr修改的用户表单中增加 ERPBot 状态和通知."}, {"id": 297, "name": "mrp_account", "summary": "制造辅助核算项", "author": "Odoo S.A.", "shortdesc": "会计 - 生产", "description": "\nMRP 中的分析会计\n==========================\n\n* 成本结构报告\n\n此外，还可以根据产品的 BoM，使用其组件和工作中心作业的成本计算产品的成本。\n它不仅可以在产品本身添加一个按钮，还可以在产品列表视图中添加一个作业。\n如果自动库存估价已激活，则将创建必要的会计分录。\n\n"}, {"id": 301, "name": "mrp_subcontracting", "summary": "分包制作", "author": "Odoo S.A.", "shortdesc": "MRP 分包", "description": ""}, {"id": 302, "name": "mrp_subcontracting_account", "summary": "", "author": "Odoo S.A.", "shortdesc": "库存计价的分包管理", "description": "\n该桥接模块可对分包合同进行估值管理。\n"}, {"id": 304, "name": "mrp_subcontracting_purchase", "summary": "", "author": "Odoo S.A.", "shortdesc": "采购和分包管理", "description": "\n该桥接模块在采购和分包之间添加了一些智能按钮\n"}, {"id": 624, "name": "om_account_followup", "summary": "Customer FollowUp Management", "author": "Odoo Mates, Odoo S.A", "shortdesc": "Customer Follow Up Management", "description": "Customer FollowUp Management"}, {"id": 308, "name": "partner_autocomplete", "summary": "自动完成合作伙伴公司的数据", "author": "Odoo S.A.", "shortdesc": "合作伙伴自动完成", "description": "\n自动完成合作伙伴公司的数据\n"}, {"id": 309, "name": "payment", "summary": "支付提供商模块使用的支付引擎。", "author": "Odoo S.A.", "shortdesc": "支付引擎", "description": ""}, {"id": 332, "name": "portal_rating", "summary": "", "author": "Odoo S.A.", "shortdesc": "门户点评", "description": "\n桥接模块在门户网站上增加了评级功能。主要包括\n直接在客户门户讨论小工具中加入评级功能。\n"}, {"id": 361, "name": "privacy_lookup", "summary": "", "author": "Odoo S.A.", "shortdesc": "隐私", "description": ""}, {"id": 362, "name": "product", "summary": "", "author": "Odoo S.A.", "shortdesc": "产品 & 价格列表", "description": "\n这是 ERP 中管理产品和价目表的基本模块。\n========================================================================\n\n产品支持变体、不同定价方法、供应商信息、\n库存/订单、不同计量单位、包装和属性。\n\n支持价目表：\n-------------------\n    * 多级折扣（按产品、类别、数量计算）\n    * 根据不同标准计算价格：\n        * 其他价目表\n        * 成本价格\n        * 清单价格\n        * 供应商价格\n\n按产品和/或合作伙伴分列的优惠价目表。\n\n打印带条形码的产品标签.\n"}, {"id": 369, "name": "project_account", "summary": "项目盈利项目计算", "author": "Odoo S.A.", "shortdesc": "项目 - 账户", "description": "\n允许计算项目盈利的某些部分\n==================================================================================================\n该模块允许在项目更新视图中计算项目盈利的 \"供应商账单\"、\"其他费用 \"和 \"其他收入 \"部分。\n"}, {"id": 372, "name": "project_mrp", "summary": "使用项目监控 MRP", "author": "Odoo S.A.", "shortdesc": "MRP 项目", "description": ""}, {"id": 373, "name": "project_purchase", "summary": "监测项目采购", "author": "Odoo S.A.", "shortdesc": "项目采购", "description": ""}, {"id": 375, "name": "project_sms", "summary": "项目/任务阶段移动时发送文本信息", "author": "Odoo S.A.", "shortdesc": "项目 - 短信", "description": "项目/任务阶段移动时发送文本信息"}, {"id": 376, "name": "project_timesheet_holidays", "summary": "计划休假时的工时表", "author": "Odoo S.A.", "shortdesc": "请假时的时间表", "description": "\n在时间表中整合休假的桥接模块\n================================================\n\n该模块可在员工请假时自动记录考勤表。\n请假。可在全公司范围内配置项目和任务。\n"}, {"id": 379, "name": "purchase_mrp", "summary": "", "author": "Odoo S.A.", "shortdesc": "采购与生产管理", "description": "\n该模块为用户提供一次安装 mrp 和采购模块的功能。\n========================================================================================\n\n该模块主要用于跟踪由采购订单生成的生产订单。\n时使用。\n"}, {"id": 649, "name": "queue_job", "summary": "", "author": "Camptocamp,ACSONE SA/NV,Odoo Community Association (OCA)", "shortdesc": "Job Queue", "description": "=========\nJob Queue\n=========\n\n.. \n   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n   !! This file is generated by oca-gen-addon-readme !!\n   !! changes will be overwritten.                   !!\n   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n   !! source digest: sha256:b9e93efc8b0afac10d4666c9b35305aac8ac679488e6ac1ad649adb7bac65f4a\n   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png\n    :target: https://odoo-community.org/page/development-status\n    :alt: Mature\n.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png\n    :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html\n    :alt: License: LGPL-3\n.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fqueue-lightgray.png?logo=github\n    :target: https://github.com/OCA/queue/tree/17.0/queue_job\n    :alt: OCA/queue\n.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png\n    :target: https://translation.odoo-community.org/projects/queue-17-0/queue-17-0-queue_job\n    :alt: Translate me on Weblate\n.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png\n    :target: https://runboat.odoo-community.org/builds?repo=OCA/queue&target_branch=17.0\n    :alt: Try me on Runboat\n\n|badge1| |badge2| |badge3| |badge4| |badge5|\n\nThis addon adds an integrated Job Queue to Odoo.\n\nIt allows to postpone method calls executed asynchronously.\n\nJobs are executed in the background by a ``Jobrunner``, in their own\ntransaction.\n\nExample:\n\n.. code:: python\n\n   from odoo import models, fields, api\n\n   class MyModel(models.Model):\n      _name = 'my.model'\n\n      def my_method(self, a, k=None):\n          _logger.info('executed with a: %s and k: %s', a, k)\n\n\n   class MyOtherModel(models.Model):\n       _name = 'my.other.model'\n\n       def button_do_stuff(self):\n           self.env['my.model'].with_delay().my_method('a', k=2)\n\nIn the snippet of code above, when we call ``button_do_stuff``, a job\n**capturing the method and arguments** will be postponed. It will be\nexecuted as soon as the Jobrunner has a free bucket, which can be\ninstantaneous if no other job is running.\n\nFeatures:\n\n-  Views for jobs, jobs are stored in PostgreSQL\n-  Jobrunner: execute the jobs, highly efficient thanks to PostgreSQL's\n   NOTIFY\n-  Channels: give a capacity for the root channel and its sub-channels\n   and segregate jobs in them. Allow for instance to restrict heavy jobs\n   to be executed one at a time while little ones are executed 4 at a\n   times.\n-  Retries: Ability to retry jobs by raising a type of exception\n-  Retry Pattern: the 3 first tries, retry after 10 seconds, the 5 next\n   tries, retry after 1 minutes, ...\n-  Job properties: priorities, estimated time of arrival (ETA), custom\n   description, number of retries\n-  Related Actions: link an action on the job view, such as open the\n   record concerned by the job\n\n**Table of contents**\n\n.. contents::\n   :local:\n\nInstallation\n============\n\nBe sure to have the ``requests`` library.\n\nConfiguration\n=============\n\n-  Using environment variables and command line:\n\n   -  Adjust environment variables (optional):\n\n      -  ``ODOO_QUEUE_JOB_CHANNELS=root:4`` or any other channels\n         configuration. The default is ``root:1``\n      -  if ``xmlrpc_port`` is not set: ``ODOO_QUEUE_JOB_PORT=8069``\n\n   -  Start Odoo with ``--load=web,queue_job`` and ``--workers`` greater\n      than 1. [1]_\n\n-  Using the Odoo configuration file:\n\n.. code:: ini\n\n   [options]\n   (...)\n   workers = 6\n   server_wide_modules = web,queue_job\n\n   (...)\n   [queue_job]\n   channels = root:2\n\n-  Confirm the runner is starting correctly by checking the odoo log\n   file:\n\n::\n\n   ...INFO...queue_job.jobrunner.runner: starting\n   ...INFO...queue_job.jobrunner.runner: initializing database connections\n   ...INFO...queue_job.jobrunner.runner: queue job runner ready for db <dbname>\n   ...INFO...queue_job.jobrunner.runner: database connections ready\n\n-  Create jobs (eg using ``base_import_async``) and observe they start\n   immediately and in parallel.\n-  Tip: to enable debug logging for the queue job, use\n   ``--log-handler=odoo.addons.queue_job:DEBUG``\n\n.. [1]\n   It works with the threaded Odoo server too, although this way of\n   running Odoo is obviously not for production purposes.\n\nUsage\n=====\n\nTo use this module, you need to:\n\n1. Go to ``Job Queue`` menu\n\nDevelopers\n----------\n\nDelaying jobs\n~~~~~~~~~~~~~\n\nThe fast way to enqueue a job for a method is to use ``with_delay()`` on\na record or model:\n\n.. code:: python\n\n   def button_done(self):\n       self.with_delay().print_confirmation_document(self.state)\n       self.write({\"state\": \"done\"})\n       return True\n\nHere, the method ``print_confirmation_document()`` will be executed\nasynchronously as a job. ``with_delay()`` can take several parameters to\ndefine more precisely how the job is executed (priority, ...).\n\nAll the arguments passed to the method being delayed are stored in the\njob and passed to the method when it is executed asynchronously,\nincluding ``self``, so the current record is maintained during the job\nexecution (warning: the context is not kept).\n\nDependencies can be expressed between jobs. To start a graph of jobs,\nuse ``delayable()`` on a record or model. The following is the\nequivalent of ``with_delay()`` but using the long form:\n\n.. code:: python\n\n   def button_done(self):\n       delayable = self.delayable()\n       delayable.print_confirmation_document(self.state)\n       delayable.delay()\n       self.write({\"state\": \"done\"})\n       return True\n\nMethods of Delayable objects return itself, so it can be used as a\nbuilder pattern, which in some cases allow to build the jobs\ndynamically:\n\n.. code:: python\n\n   def button_generate_simple_with_delayable(self):\n       self.ensure_one()\n       # Introduction of a delayable object, using a builder pattern\n       # allowing to chain jobs or set properties. The delay() method\n       # on the delayable object actually stores the delayable objects\n       # in the queue_job table\n       (\n           self.delayable()\n           .generate_thumbnail((50, 50))\n           .set(priority=30)\n           .set(description=_(\"generate xxx\"))\n           .delay()\n       )\n\nThe simplest way to define a dependency is to use ``.on_done(job)`` on a\nDelayable:\n\n.. code:: python\n\n   def button_chain_done(self):\n       self.ensure_one()\n       job1 = self.browse(1).delayable().generate_thumbnail((50, 50))\n       job2 = self.browse(1).delayable().generate_thumbnail((50, 50))\n       job3 = self.browse(1).delayable().generate_thumbnail((50, 50))\n       # job 3 is executed when job 2 is done which is executed when job 1 is done\n       job1.on_done(job2.on_done(job3)).delay()\n\nDelayables can be chained to form more complex graphs using the\n``chain()`` and ``group()`` primitives. A chain represents a sequence of\njobs to execute in order, a group represents jobs which can be executed\nin parallel. Using ``chain()`` has the same effect as using several\nnested ``on_done()`` but is more readable. Both can be combined to form\na graph, for instance we can group [A] of jobs, which blocks another\ngroup [B] of jobs. When and only when all the jobs of the group [A] are\nexecuted, the jobs of the group [B] are executed. The code would look\nlike:\n\n.. code:: python\n\n   from odoo.addons.queue_job.delay import group, chain\n\n   def button_done(self):\n       group_a = group(self.delayable().method_foo(), self.delayable().method_bar())\n       group_b = group(self.delayable().method_baz(1), self.delayable().method_baz(2))\n       chain(group_a, group_b).delay()\n       self.write({\"state\": \"done\"})\n       return True\n\nWhen a failure happens in a graph of jobs, the execution of the jobs\nthat depend on the failed job stops. They remain in a state\n``wait_dependencies`` until their \"parent\" job is successful. This can\nhappen in two ways: either the parent job retries and is successful on a\nsecond try, either the parent job is manually \"set to done\" by a user.\nIn these two cases, the dependency is resolved and the graph will\ncontinue to be processed. Alternatively, the failed job and all its\ndependent jobs can be canceled by a user. The other jobs of the graph\nthat do not depend on the failed job continue their execution in any\ncase.\n\nNote: ``delay()`` must be called on the delayable, chain, or group which\nis at the top of the graph. In the example above, if it was called on\n``group_a``, then ``group_b`` would never be delayed (but a warning\nwould be shown).\n\nEnqueing Job Options\n~~~~~~~~~~~~~~~~~~~~\n\n-  priority: default is 10, the closest it is to 0, the faster it will\n   be executed\n-  eta: Estimated Time of Arrival of the job. It will not be executed\n   before this date/time\n-  max_retries: default is 5, maximum number of retries before giving up\n   and set the job state to 'failed'. A value of 0 means infinite\n   retries.\n-  description: human description of the job. If not set, description is\n   computed from the function doc or method name\n-  channel: the complete name of the channel to use to process the\n   function. If specified it overrides the one defined on the function\n-  identity_key: key uniquely identifying the job, if specified and a\n   job with the same key has not yet been run, the new job will not be\n   created\n\nConfigure default options for jobs\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn earlier versions, jobs could be configured using the ``@job``\ndecorator. This is now obsolete, they can be configured using optional\n``queue.job.function`` and ``queue.job.channel`` XML records.\n\nExample of channel:\n\n.. code:: XML\n\n   <record id=\"channel_sale\" model=\"queue.job.channel\">\n       <field name=\"name\">sale</field>\n       <field name=\"parent_id\" ref=\"queue_job.channel_root\" />\n   </record>\n\nExample of job function:\n\n.. code:: XML\n\n   <record id=\"job_function_sale_order_action_done\" model=\"queue.job.function\">\n       <field name=\"model_id\" ref=\"sale.model_sale_order\" />\n       <field name=\"method\">action_done</field>\n       <field name=\"channel_id\" ref=\"channel_sale\" />\n       <field name=\"related_action\" eval='{\"func_name\": \"custom_related_action\"}' />\n       <field name=\"retry_pattern\" eval=\"{1: 60, 2: 180, 3: 10, 5: 300}\" />\n   </record>\n\nThe general form for the ``name`` is: ``<model.name>.method``.\n\nThe channel, related action and retry pattern options are optional, they\nare documented below.\n\nWhen writing modules, if 2+ modules add a job function or channel with\nthe same name (and parent for channels), they'll be merged in the same\nrecord, even if they have different xmlids. On uninstall, the merged\nrecord is deleted when all the modules using it are uninstalled.\n\n**Job function: model**\n\nIf the function is defined in an abstract model, you can not write\n``<field name=\"model_id\" ref=\"xml_id_of_the_abstract_model\"</field>``\nbut you have to define a function for each model that inherits from the\nabstract model.\n\n**Job function: channel**\n\nThe channel where the job will be delayed. The default channel is\n``root``.\n\n**Job function: related action**\n\nThe *Related Action* appears as a button on the Job's view. The button\nwill execute the defined action.\n\nThe default one is to open the view of the record related to the job\n(form view when there is a single record, list view for several\nrecords). In many cases, the default related action is enough and\ndoesn't need customization, but it can be customized by providing a\ndictionary on the job function:\n\n.. code:: python\n\n   {\n       \"enable\": False,\n       \"func_name\": \"related_action_partner\",\n       \"kwargs\": {\"name\": \"Partner\"},\n   }\n\n-  ``enable``: when ``False``, the button has no effect (default:\n   ``True``)\n-  ``func_name``: name of the method on ``queue.job`` that returns an\n   action\n-  ``kwargs``: extra arguments to pass to the related action method\n\nExample of related action code:\n\n.. code:: python\n\n   class QueueJob(models.Model):\n       _inherit = 'queue.job'\n\n       def related_action_partner(self, name):\n           self.ensure_one()\n           model = self.model_name\n           partner = self.records\n           action = {\n               'name': name,\n               'type': 'ir.actions.act_window',\n               'res_model': model,\n               'view_type': 'form',\n               'view_mode': 'form',\n               'res_id': partner.id,\n           }\n           return action\n\n**Job function: retry pattern**\n\nWhen a job fails with a retryable error type, it is automatically\nretried later. By default, the retry is always 10 minutes later.\n\nA retry pattern can be configured on the job function. What a pattern\nrepresents is \"from X tries, postpone to Y seconds\". It is expressed as\na dictionary where keys are tries and values are seconds to postpone as\nintegers:\n\n.. code:: python\n\n   {\n       1: 10,\n       5: 20,\n       10: 30,\n       15: 300,\n   }\n\nBased on this configuration, we can tell that:\n\n-  5 first retries are postponed 10 seconds later\n-  retries 5 to 10 postponed 20 seconds later\n-  retries 10 to 15 postponed 30 seconds later\n-  all subsequent retries postponed 5 minutes later\n\n**Job Context**\n\nThe context of the recordset of the job, or any recordset passed in\narguments of a job, is transferred to the job according to an\nallow-list.\n\nThe default allow-list is (\"tz\", \"lang\", \"allowed_company_ids\",\n\"force_company\", \"active_test\"). It can be customized in\n``Base._job_prepare_context_before_enqueue_keys``. **Bypass jobs on\nrunning Odoo**\n\nWhen you are developing (ie: connector modules) you might want to bypass\nthe queue job and run your code immediately.\n\nTo do so you can set QUEUE_JOB\\__NO_DELAY=1 in your enviroment.\n\n**Bypass jobs in tests**\n\nWhen writing tests on job-related methods is always tricky to deal with\ndelayed recordsets. To make your testing life easier you can set\nqueue_job\\__no_delay=True in the context.\n\nTip: you can do this at test case level like this\n\n.. code:: python\n\n   @classmethod\n   def setUpClass(cls):\n       super().setUpClass()\n       cls.env = cls.env(context=dict(\n           cls.env.context,\n           queue_job__no_delay=True,  # no jobs thanks\n       ))\n\nThen all your tests execute the job methods synchronously without\ndelaying any jobs.\n\nTesting\n~~~~~~~\n\n**Asserting enqueued jobs**\n\nThe recommended way to test jobs, rather than running them directly and\nsynchronously is to split the tests in two parts:\n\n   -  one test where the job is mocked (trap jobs with ``trap_jobs()``\n      and the test only verifies that the job has been delayed with the\n      expected arguments\n   -  one test that only calls the method of the job synchronously, to\n      validate the proper behavior of this method only\n\nProceeding this way means that you can prove that jobs will be enqueued\nproperly at runtime, and it ensures your code does not have a different\nbehavior in tests and in production (because running your jobs\nsynchronously may have a different behavior as they are in the same\ntransaction / in the middle of the method). Additionally, it gives more\ncontrol on the arguments you want to pass when calling the job's method\n(synchronously, this time, in the second type of tests), and it makes\ntests smaller.\n\nThe best way to run such assertions on the enqueued jobs is to use\n``odoo.addons.queue_job.tests.common.trap_jobs()``.\n\nA very small example (more details in ``tests/common.py``):\n\n.. code:: python\n\n   # code\n   def my_job_method(self, name, count):\n       self.write({\"name\": \" \".join([name] * count)\n\n   def method_to_test(self):\n       count = self.env[\"other.model\"].search_count([])\n       self.with_delay(priority=15).my_job_method(\"Hi!\", count=count)\n       return count\n\n   # tests\n   from odoo.addons.queue_job.tests.common import trap_jobs\n\n   # first test only check the expected behavior of the method and the proper\n   # enqueuing of jobs\n   def test_method_to_test(self):\n       with trap_jobs() as trap:\n           result = self.env[\"model\"].method_to_test()\n           expected_count = 12\n\n           trap.assert_jobs_count(1, only=self.env[\"model\"].my_job_method)\n           trap.assert_enqueued_job(\n               self.env[\"model\"].my_job_method,\n               args=(\"Hi!\",),\n               kwargs=dict(count=expected_count),\n               properties=dict(priority=15)\n           )\n           self.assertEqual(result, expected_count)\n\n\n    # second test to validate the behavior of the job unitarily\n    def test_my_job_method(self):\n        record = self.env[\"model\"].browse(1)\n        record.my_job_method(\"Hi!\", count=12)\n        self.assertEqual(record.name, \"Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi!\")\n\nIf you prefer, you can still test the whole thing in a single test, by\ncalling ``jobs_tester.perform_enqueued_jobs()`` in your test.\n\n.. code:: python\n\n   def test_method_to_test(self):\n       with trap_jobs() as trap:\n           result = self.env[\"model\"].method_to_test()\n           expected_count = 12\n\n           trap.assert_jobs_count(1, only=self.env[\"model\"].my_job_method)\n           trap.assert_enqueued_job(\n               self.env[\"model\"].my_job_method,\n               args=(\"Hi!\",),\n               kwargs=dict(count=expected_count),\n               properties=dict(priority=15)\n           )\n           self.assertEqual(result, expected_count)\n\n           trap.perform_enqueued_jobs()\n\n           record = self.env[\"model\"].browse(1)\n           record.my_job_method(\"Hi!\", count=12)\n           self.assertEqual(record.name, \"Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi!\")\n\n**Execute jobs synchronously when running Odoo**\n\nWhen you are developing (ie: connector modules) you might want to bypass\nthe queue job and run your code immediately.\n\nTo do so you can set ``QUEUE_JOB__NO_DELAY=1`` in your environment.\n\nWarning\n\nDo not do this in production\n\n**Execute jobs synchronously in tests**\n\nYou should use ``trap_jobs``, really, but if for any reason you could\nnot use it, and still need to have job methods executed synchronously in\nyour tests, you can do so by setting ``queue_job__no_delay=True`` in the\ncontext.\n\nTip: you can do this at test case level like this\n\n.. code:: python\n\n   @classmethod\n   def setUpClass(cls):\n       super().setUpClass()\n       cls.env = cls.env(context=dict(\n           cls.env.context,\n           queue_job__no_delay=True,  # no jobs thanks\n       ))\n\nThen all your tests execute the job methods synchronously without\ndelaying any jobs.\n\nIn tests you'll have to mute the logger like:\n\n   @mute_logger('odoo.addons.queue_job.models.base')\n\nNote\n\nin graphs of jobs, the ``queue_job__no_delay`` context key must be in at\nleast one job's env of the graph for the whole graph to be executed\nsynchronously\n\nTips and tricks\n~~~~~~~~~~~~~~~\n\n-  **Idempotency**\n   (https://www.restapitutorial.com/lessons/idempotency.html): The\n   queue_job should be idempotent so they can be retried several times\n   without impact on the data.\n-  **The job should test at the very beginning its relevance**: the\n   moment the job will be executed is unknown by design. So the first\n   task of a job should be to check if the related work is still\n   relevant at the moment of the execution.\n\nPatterns\n~~~~~~~~\n\nThrough the time, two main patterns emerged:\n\n1. For data exposed to users, a model should store the data and the\n   model should be the creator of the job. The job is kept hidden from\n   the users\n2. For technical data, that are not exposed to the users, it is\n   generally alright to create directly jobs with data passed as\n   arguments to the job, without intermediary models.\n\nKnown issues / Roadmap\n======================\n\n-  After creating a new database or installing ``queue_job`` on an\n   existing database, Odoo must be restarted for the runner to detect\n   it.\n-  When Odoo shuts down normally, it waits for running jobs to finish.\n   However, when the Odoo server crashes or is otherwise force-stopped,\n   running jobs are interrupted while the runner has no chance to know\n   they have been aborted. In such situations, jobs may remain in\n   ``started`` or ``enqueued`` state after the Odoo server is halted.\n   Since the runner has no way to know if they are actually running or\n   not, and does not know for sure if it is safe to restart the jobs, it\n   does not attempt to restart them automatically. Such stale jobs\n   therefore fill the running queue and prevent other jobs to start. You\n   must therefore requeue them manually, either from the Jobs view, or\n   by running the following SQL statement *before starting Odoo*:\n\n.. code:: sql\n\n   update queue_job set state='pending' where state in ('started', 'enqueued')\n\nChangelog\n=========\n\nNext\n----\n\n-  [ADD] Run jobrunner as a worker process instead of a thread in the\n   main process (when running with --workers > 0)\n-  [REF] ``@job`` and ``@related_action`` deprecated, any method can be\n   delayed, and configured using ``queue.job.function`` records\n-  [MIGRATION] from 13.0 branched at rev. e24ff4b\n\nBug Tracker\n===========\n\nBugs are tracked on `GitHub Issues <https://github.com/OCA/queue/issues>`_.\nIn case of trouble, please check there if your issue has already been reported.\nIf you spotted it first, help us to smash it by providing a detailed and welcomed\n`feedback <https://github.com/OCA/queue/issues/new?body=module:%20queue_job%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.\n\nDo not contact contributors directly about support or help with technical issues.\n\nCredits\n=======\n\nAuthors\n-------\n\n* Camptocamp\n* ACSONE SA/NV\n\nContributors\n------------\n\n-  Guewen Baconnier <guewen.baconnier@camptocamp.com>\n-  Stéphane Bidoul <stephane.bidoul@acsone.eu>\n-  Matthieu Dietrich <matthieu.dietrich@camptocamp.com>\n-  Jos De Graeve <Jos.DeGraeve@apertoso.be>\n-  David Lefever <dl@taktik.be>\n-  Laurent Mignon <laurent.mignon@acsone.eu>\n-  Laetitia Gangloff <laetitia.gangloff@acsone.eu>\n-  Cédric Pigeon <cedric.pigeon@acsone.eu>\n-  Tatiana Deribina <tatiana.deribina@avoin.systems>\n-  Souheil Bejaoui <souheil.bejaoui@acsone.eu>\n-  Eric Antones <eantones@nuobit.com>\n-  Simone Orsi <simone.orsi@camptocamp.com>\n-  Nguyen Minh Chien <chien@trobz.com>\n\nMaintainers\n-----------\n\nThis module is maintained by the OCA.\n\n.. image:: https://odoo-community.org/logo.png\n   :alt: Odoo Community Association\n   :target: https://odoo-community.org\n\nOCA, or the Odoo Community Association, is a nonprofit organization whose\nmission is to support the collaborative development of Odoo features and\npromote its widespread use.\n\n.. |maintainer-guewen| image:: https://github.com/guewen.png?size=40px\n    :target: https://github.com/guewen\n    :alt: guewen\n\nCurrent `maintainer <https://odoo-community.org/page/maintainer-role>`__:\n\n|maintainer-guewen| \n\nThis module is part of the `OCA/queue <https://github.com/OCA/queue/tree/17.0/queue_job>`_ project on GitHub.\n\nYou are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.\n"}, {"id": 385, "name": "rating", "summary": "", "author": "Odoo S.A.", "shortdesc": "客户评级", "description": "\n本模块允许客户进行点评\n"}, {"id": 387, "name": "resource", "summary": "", "author": "Odoo S.A.", "shortdesc": "资源", "description": "\n资源管理模块。\n===============================\n\n资源代表可调度的东西（任务中的开发人员或生产订单中的工作中心）。\n工作中心）。该模块管理与每个资源\n与每个资源相关联。它还管理每个资源的叶子。\n"}, {"id": 388, "name": "sale", "summary": "销售内部机械", "author": "Odoo S.A.", "shortdesc": "销售", "description": "\n该模块包含销售管理和电子商务的所有常用功能。\n"}, {"id": 389, "name": "sale_async_emails", "summary": "Send order status emails asynchronously", "author": "Odoo S.A.", "shortdesc": "Sales - Async Emails", "description": ""}, {"id": 390, "name": "sale_crm", "summary": "", "author": "Odoo S.A.", "shortdesc": "报价机会", "description": "\n该模块为 CRM 中的一个或多个机会案例添加了快捷方式。\n===========================================================================\n\n该快捷方式允许您根据所选案例生成销售订单。\n如果打开了不同的案例（列表），则按案例生成一个销售订单。\n然后关闭案例并与生成的销售订单链接。\n\n如果同时安装了销售模块和 crm\n模块。\n"}, {"id": 393, "name": "sale_loyalty", "summary": "在销售订单中使用折扣和忠诚度计划", "author": "Odoo S.A.", "shortdesc": "销售忠诚度", "description": "在销售订单中整合折扣和忠诚度计划机制。"}, {"id": 394, "name": "sale_loyalty_delivery", "summary": "在销售订单中添加免费送货机制", "author": "Odoo S.A.", "shortdesc": "销售忠诚度 - 交货", "description": "在销售订单中整合免运费功能。"}, {"id": 397, "name": "sale_mrp", "summary": "", "author": "Odoo S.A.", "shortdesc": "销售与生产管理", "description": "\n该模块可让用户一次安装 mrp 和销售模块。\n====================================================================================\n\n该模块主要用于跟踪由销售订单生成的生产订单。\n时使用。它在生产订单上添加销售名称和销售编号。\n"}, {"id": 399, "name": "sale_pdf_quote_builder", "summary": "", "author": "Odoo S.A.", "shortdesc": "销售 PDF 报价生成器", "description": "建立漂亮的报价单"}, {"id": 400, "name": "sale_product_configurator", "summary": "配置您的产品", "author": "Odoo S.A.", "shortdesc": "销售产品配置器", "description": "\n技术模块：\n主要目的是覆盖 sale_order 视图，以便在 SO 表单中配置产品。\n\n它还启用了 \"可选产品 \"功能。\n"}, {"id": 402, "name": "sale_project", "summary": "根据销售订单生成任务", "author": "Odoo S.A.", "shortdesc": "销售 - 项目", "description": "\n允许从销售订单创建任务\n=============================================\n此模块允许从销售订单生成项目/任务。\n"}, {"id": 403, "name": "sale_project_stock", "summary": "在盈利报告中增加了库存操作的完整可追溯性。", "author": "Odoo S.A.", "shortdesc": "销售项目 - 销售库存", "description": "在盈利报告中增加了库存操作的完整可追溯性。"}, {"id": 404, "name": "sale_purchase", "summary": "基于服务外包的销售。", "author": "Odoo S.A.", "shortdesc": "销售 采购", "description": "\n允许外包服务。该模块允许销售外部供应商提供的服务\n该模块允许销售外部供应商提供的服务，并自动生成指向服务销售商的采购订单。\n"}, {"id": 405, "name": "sale_purchase_stock", "summary": "按订单生产MTO情况下的销售订单SO/采购订单PO的关系", "author": "Odoo S.A.", "shortdesc": "按订单生产 订单 <-> 采购", "description": "\n若在一个已售产品上激活 按订单生产(MTO)，则添加销售订单和采购订单之间的关系信息。\n"}, {"id": 406, "name": "sale_service", "summary": "销售和服务应用程序（项目和规划）之间的互动", "author": "Odoo S.A.", "shortdesc": "销售 - 服务", "description": "\n允许在 SOL 服务应用程序中显示销售信息\n===========================================================\n在服务应用程序（项目和规划）中使用 SOL 时，会在其名称中显示附加信息。\n"}, {"id": 407, "name": "sale_sms", "summary": "轻松将短信与销售功能集成", "author": "Odoo S.A.", "shortdesc": "销售 - 短信", "description": "轻松将短信与销售功能集成"}, {"id": 412, "name": "sales_team", "summary": "销售团队", "author": "Odoo S.A.", "shortdesc": "销售团队", "description": "\n使用此应用程序，您可以通过 CRM 和/或销售系统管理销售团队。\n=======================================================================\n"}, {"id": 408, "name": "sale_stock", "summary": "报价单，销售订单，出库单和账单控制", "author": "Odoo S.A.", "shortdesc": "销售和仓库管理", "description": "\n销售报价单和订单管理\n==================================\n\n这个模块关联了销售和仓库管理程序。\n\n选项参数\n-----------\n* 运输: 交货或分批交货的选择\n* 开票: 选择如何开票\n* 国际贸易术语：国际贸易术语\n\n"}, {"id": 410, "name": "sale_timesheet", "summary": "基于服务的销售", "author": "Odoo S.A.", "shortdesc": "销售服务", "description": "\n允许在销售订单使用工时表\n=============================================\n\n该模块根据你处理的订单/合同，将正确的产品添加到所有的工时表明细中。这样您可以看到销售订单的已交付产品。\n"}, {"id": 658, "name": "sf_express_base", "summary": "用于连接顺丰快递", "author": "qzcpl", "shortdesc": "顺丰快递对接模块", "description": ""}, {"id": 413, "name": "sms", "summary": "SMS 文本消息", "author": "Odoo S.A.", "shortdesc": "SMS 网关", "description": "\n该模块提供了用于短消息发送的框架\n----------------------------------------------------\n\n这一服务是由应用内采购 ERP 平台提供的.\n"}, {"id": 414, "name": "snailmail", "summary": "", "author": "Odoo S.A.", "shortdesc": "平信", "description": "\n允许用户邮寄文件\n=====================================================\n"}, {"id": 415, "name": "snailmail_account", "summary": "", "author": "Odoo S.A.", "shortdesc": "蜗牛邮件 - 账户", "description": "\n允许用户邮寄发票\n=====================================================\n"}, {"id": 416, "name": "social_media", "summary": "公司设置的社交媒体连接器。", "author": "Odoo S.A.", "shortdesc": "社交媒体", "description": "\n本技术模块的目的是为其他可能需要的模块提供社交媒体配置前台。\n社交媒体配置的前台。\n"}, {"id": 417, "name": "spreadsheet", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "电子表格", "description": "电子表格"}, {"id": 418, "name": "spreadsheet_account", "summary": "电子表格会计公式", "author": "Odoo S.A.", "shortdesc": "电子表格会计公式", "description": "电子表格会计公式"}, {"id": 419, "name": "spreadsheet_dashboard", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "电子表格仪表板", "description": "电子表格"}, {"id": 420, "name": "spreadsheet_dashboard_account", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "电子表格会计仪表板", "description": "电子表格"}, {"id": 423, "name": "spreadsheet_dashboard_hr_timesheet", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "工时表电子表格仪表板", "description": "电子表格"}, {"id": 424, "name": "spreadsheet_dashboard_im_livechat", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "即时聊天电子表格仪表板", "description": "电子表格"}, {"id": 426, "name": "spreadsheet_dashboard_purchase", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "电子表格采购仪表板", "description": "电子表格"}, {"id": 427, "name": "spreadsheet_dashboard_purchase_stock", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "电子表格采购仪表板", "description": "电子表格"}, {"id": 428, "name": "spreadsheet_dashboard_sale", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "销售电子表格仪表板", "description": "电子表格"}, {"id": 429, "name": "spreadsheet_dashboard_sale_timesheet", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "工时表电子表格仪表板", "description": "电子表格"}, {"id": 430, "name": "spreadsheet_dashboard_stock_account", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "用于库存的电子表格仪表板", "description": "电子表格"}, {"id": 431, "name": "spreadsheet_dashboard_website_sale", "summary": "电子表格", "author": "Odoo S.A.", "shortdesc": "电子商务电子表格仪表板", "description": "电子表格"}, {"id": 435, "name": "stock_delivery", "summary": "", "author": "Odoo S.A.", "shortdesc": "交货 - 库存", "description": "\n允许您在采摘中添加送货方式。\n===============================================\n\n通过分拣创建发票时，系统能够添加和计算运输线路。\n"}, {"id": 440, "name": "stock_sms", "summary": "最后库存移动时发送文本消息", "author": "Odoo S.A.", "shortdesc": "库存 - 短信", "description": "最后库存移动时发送文本消息"}, {"id": 520, "name": "uom", "summary": "", "author": "Odoo S.A.", "shortdesc": "计量单位", "description": "\n这是管理计量单位的基础模块。\n========================================================================\n"}, {"id": 521, "name": "utm", "summary": "", "author": "Odoo S.A.", "shortdesc": "UTM 跟踪器", "description": "\n启用 UTM 跟踪器管理：活动、媒介、来源。\n"}, {"id": 522, "name": "web", "summary": "", "author": "Odoo S.A.", "shortdesc": "网页", "description": "\n核心模块。\n========================\n\n该模块提供网页客户端的核心功能\n"}, {"id": 523, "name": "web_editor", "summary": "", "author": "Odoo S.A.", "shortdesc": "网页编辑器", "description": "\nERP Web编辑器小插件\n==========================\n"}, {"id": 524, "name": "web_hierarchy", "summary": "", "author": "Odoo S.A.", "shortdesc": "网络层次结构", "description": "\nERP 网络层级结构视图\n=======================\n\n该模块添加了一个新视图，用于定义视图以显示组织结构，例如员工组织结构图。\n例如员工组织结构图实例.\n"}, {"id": 532, "name": "website_crm_livechat", "summary": "查看线索的即时聊天会话", "author": "Odoo S.A.", "shortdesc": "线索实时聊天会话", "description": "在线索表单视图上添加统计按钮，以访问他们的即时聊天会话。"}, {"id": 551, "name": "website_form_project", "summary": "在网站上添加任务建议表", "author": "Odoo S.A.", "shortdesc": "在线提交任务", "description": "\n从网站上发布的表单生成项目应用程序中的任务。该模块需要使用 *表单 Builder* 模块订单（ERP Enterprise 中可用的）才能创建表单.\n"}, {"id": 556, "name": "website_links", "summary": "生成可跟踪的简短 URL", "author": "Odoo S.A.", "shortdesc": "链接跟踪器", "description": "\n生成带有分析跟踪器（UTM）的短链接，通过营销活动分享您的网页。\n这些跟踪器可用于 Google Analytics 跟踪点击和访客，或用于 ERP 报告，以分析这些营销活动在潜在客户线索生成、相关的收入（销售订单）、招聘等方面的效率.\n"}, {"id": 557, "name": "website_livechat", "summary": "与您网站的访问者进行聊天", "author": "Odoo S.A.", "shortdesc": "客服", "description": "\n允许网站游客与合作者聊天。该模块还为即时聊天和网页提供了反馈工具，可在网站上显示您的频道及其评分。\n"}, {"id": 558, "name": "website_mail", "summary": "网站邮件模块", "author": "Odoo S.A.", "shortdesc": "网站邮件", "description": "\n为网站保持邮件改进的模块，有以下小部件。\n"}, {"id": 563, "name": "website_partner", "summary": "网站合作伙伴模块", "author": "Odoo S.A.", "shortdesc": "合作伙伴", "description": "\n这是一个基础模块。它为联系模型（res.partner）保存与网站相关的内容。\n"}, {"id": 564, "name": "website_payment", "summary": "付款与网站整合", "author": "Odoo S.A.", "shortdesc": "网站付款", "description": "\n这是一个桥接模块，可为支付提供商增加多网站支持。\n"}, {"id": 566, "name": "website_profile", "summary": "访问用户的网站简介", "author": "Odoo S.A.", "shortdesc": "网站简介", "description": "允许访问用户的网站配置并查看他们的统计(贡献度、徽章等...)"}, {"id": 571, "name": "website_sale_loyalty", "summary": "在电子商务商店中使用优惠券、促销、礼品卡和忠诚度计划", "author": "Odoo S.A.", "shortdesc": "电子商务优惠券、促销、礼品卡和会员", "description": "\n创建优惠券、促销代码、礼品卡和忠诚度计划，以提高销售额（免费产品、折扣等）。购物者可以在电子商务结账时使用它们。\n\n优惠券和促销计划可在网站应用程序的目录菜单中编辑。\n"}, {"id": 574, "name": "website_sale_product_configurator", "summary": "网站销售/产品销售配置器的桥接模块", "author": "Odoo S.A.", "shortdesc": "网站销售产品配置器", "description": "\n桥接模块，使网站电子商务与产品配置器兼容\n"}, {"id": 576, "name": "website_sale_stock", "summary": "管理产品库存和可用性", "author": "Odoo S.A.", "shortdesc": "产品可用性", "description": "\n管理产品库存，并在电子商务商店中显示其可用状态。\n如果出现缺货，您可以决定阻止继续销售或继续销售。\n可以在网站设置中选择默认行为。\n然后可以在产品级别上进行特定设置。\n"}, {"id": 525, "name": "web_tour", "summary": "", "author": "Odoo S.A.", "shortdesc": "旅游", "description": "\n智满屋 Web 测试\n"}, {"id": 660, "name": "wx_miniprogram_base", "summary": "用于连接微信小程序", "author": "qzcpl", "shortdesc": "微信小程序", "description": ""}, {"id": 648, "name": "yun3d_product_extinfo", "summary": "yun3d product extinfo", "author": "qzcpl", "shortdesc": "yun3d产品扩展模块", "description": "\n1、获取报价自定义网页。\n\n2、图纸上传功能。\n\n3、图纸解析功能，需要安装第三方Python包numpy、trimesh、pythonOCC，请通过pip安装，国内需要下载源码编译安装。\n\n4、3D图纸扩展的专用字段、用于跑通专有业务定制流程。\n\n"}, {"id": 499, "name": "theme_cobalt", "summary": "Development, IT development, Design, Tech, Computers, IT, Blogs", "author": "Odoo S.A.", "shortdesc": "Cobalt Theme", "description": "Clean and sharp design."}, {"id": 83, "name": "hr_maintenance", "summary": "设备、资产、内部硬件、分配跟踪", "author": "Odoo S.A.", "shortdesc": "维护 - 人力资源", "description": "\n人力资源与维护之间的桥梁。"}, {"id": 66, "name": "gamification", "summary": "", "author": "Odoo S.A.", "shortdesc": "积分管理", "description": "\n游戏化处理\n====================\n游戏化模块提供了评估和激励系统用户的方法。\n\n用户可以使用目标或要达到的量化化目标进行评估。\n**目标** 通过指定指派 **挑战**指定并根据时间以及与团队其它成员比较来进行评估。\n\n对一些不能量化的目标，**徽标**可以奖励给用户。对于一个意外的成就，从一个简单的“谢谢”到一个徽章，这是简单的对成员的优秀工作进行激励的方法。\n\n目标和徽标都是柔性的，并且可以被指定给大量范围的模块和动作。当安装后，这个模块创建简单的目标来帮助新用户来探索 ERP  和配置他们的模板。\n"}, {"id": 327, "name": "payment_stripe", "summary": "爱尔兰裔美国人支付服务提供商，业务覆盖美国及其他许多国家。", "author": "Odoo S.A.", "shortdesc": "付款提供商：Stripe", "description": ""}, {"id": 331, "name": "portal", "summary": "客户门户网站", "author": "Odoo S.A.", "shortdesc": "客户门户网站", "description": "\n该模块为完全集成的客户门户添加了所需的基础代码。\n它包含基本控制器类和基本模板。业务插件\n将添加其特定模板和控制器，以扩展客户\n门户。\n\n该模块包含 ERP v10 website_portal 的大部分代码。该模块的目的\n本模块的目的是允许显示客户门户，而无需依赖网站编辑和定制功能。\n对网站编辑和定制功能的依赖."}, {"id": 307, "name": "onboarding", "summary": "", "author": "Odoo S.A.", "shortdesc": "入职工具箱", "description": "\n该模块可管理入职及其进展情况\n================================================================================\n"}, {"id": 97, "name": "http_routing", "summary": "Web 路由", "author": "Odoo S.A.", "shortdesc": "Web 路由", "description": "\n针对 web 或基础模块中不能提供的高级路线的建议，以保持基础模块的简洁。\n"}, {"id": 329, "name": "phone_validation", "summary": "验证和格式化电话号码", "author": "Odoo S.A.", "shortdesc": "电话号码验证", "description": "\n 电话号码验证\n========================\n\n 此模块会添加\n 根据目标国家/地区验证及格式化电话号码的功能。\n其也会处理电话黑名单管理通过特定的模型存储\n 电话黑名单。\n新增了两个mixin :\n\nphone.validation。mixin:解析/格式化助手记录,例如使用在数字领域onchange;* mail.thread。电话:处理卫生和黑名单记录数字; "}]