Ով Odoo-ում փաթեթներ է վաճառում, օրինակ՝ չափիչ սարք՝ պարագաներով և տեղադրմամբ, աշխատատեղ՝ սարքավորումներով և կարգավորմամբ, կամ մի քանի ծառայությունից բաղկացած սպասարկման փաթեթ, առաջարկում միաժամանակ երկու բան է պետք․ Բաղադրակազմը պետք է նշված լինի պատվերում, որպեսզի պահեստը, տեխնիկական բաժինը և հաշիվների կազմումը իմանան, թե ինչ է առաքվում։ Սակայն հաճախորդի համար տպվող օրինակում ամեն դեպքում չպետք է յուրաքանչյուր առանձին դիրք՝ իր առանձին գնով, երևա։
sale_product_set OCA մոդուլը թույլ է տալիս մեկ կտտոցով առաջարկում տեղադրել ապրանքակոմպլեկտներ (վաճառքի բաղադրակազմեր)։ Տպման տեսքը նա չի որոշում։ Դրա համար մենք մշակել ենք Sale Product Set Layout (sale_product_set_layout) մոդուլը։ Այն գրված է Odoo 19-ի համար և որպես ազատ ծրագրային ապահովում՝ AGPL-3 լիցենզիայով, անվճար հասանելի է GitHub-ում՝
github.com/Alex0176/odoo-sale-product-set-layout
Այս հոդվածի բովանդակությունը
- Խնդիրը․ ապրանքակոմպլեկտներ՝ առանց ազդեցության տպման տեսքի վրա
- Ինչ է անում մոդուլը
- Երեք տպման ռեժիմները մանրամասն
- Թաքցված տողեր և ֆիքսված գին
- Տեխնիկական իրականացում
- Տեղադրում՝ առանց անցանկալի կողմնակի ազդեցությունների
- Օգտագործումը քայլ առ քայլ
- Թեստեր
- Սահմանափակումներ և իրավական նշում
- Հաճախ տրվող հարցեր
- Biricon IT Services-ի աջակցությունը
Խնդիրը․ ապրանքակոմպլեկտներ՝ առանց ազդեցության տպման տեսքի վրա
Odoo-ում ապրանքակոմպլեկտը ապրանքների նախապես պատրաստված ցանկ է՝ քանակներով։ Տասը առարկա առանձին-առանձին որոնելու փոխարեն առաջարկում ընտրում եք Ավելացնել կոմպլեկտ, և բոլոր տողերը ստանում եք միանգամից։ Դա խնայում է ժամանակ և կանխում է մոռացված դիրքերը։ Հենց դա է անում sale_product_set մոդուլը այս պահոցից՝ OCA/sale-workflow իսկ կոմպլեկտներն իրենք ստացվում են product_set-ից այս պահոցում՝ OCA/product-attribute.
Գործնականում մնում են երեք բացթողումներ․
- Տեսանելի խմբավորում չկա։ Կոմպլեկտի տողերը առաջարկում հայտնվում են որպես առանձին դիրքեր։ Տեղադրելուց հետո այլևս չի երևում, թե որ տողերն են իրար պատկանում, և կոմպլեկտի ընդհանուր գումարը ոչ մի տեղ չկա։
- Ազդեցություն տպվող օրինակի վրա չկա։ Երբեմն հաճախորդը պետք է տեսնի յուրաքանչյուր դիրքը՝ գնով, երբեմն՝ միայն փաթեթի գինը, երբեմն՝ միայն մեկ տող։ Դա որոշում է յուրաքանչյուր կոմպլեկտի կամ հաճախորդի համար, այլ ոչ թե ամեն անգամ նոր առաջարկում ձեռքով։
- Գնի ուղղումները անհարմար են։ Եթե փաթեթն ունենալու է ֆիքսված գին, որը տարբերվում է գնացուցակի գների գումարից, անհրաժեշտ է ուղղման տող։ Այն պետք է մասնակցի հաշվարկին, բայց անպայման չէ, որ երևա հաճախորդի թղթի վրա։
Odoo 19-ը պարունակում է այն հիմնական բաղադրիչները, որոնք թույլ են տալիս սա մաքուր լուծել․ առաջարկի տողերում բաժիններ և ենթաբաժիններ՝ Թաքցնել գները և Թաքցնել բաղադրակազմը տարբերակներով (collapse_prices և collapse_composition դաշտեր)։ Մոդուլը կապում է ապրանքակոմպլեկտը այս ստանդարտ տարբերակների հետ՝ սեփական տպման ձևաչափ հորինելու փոխարեն։
Ինչ է անում մոդուլը
- Կոմպլեկտը տեղադրել որպես բաժին։ Ավելացնել կոմպլեկտ օգնականը ստեղծում է բաժնի տող՝ կոմպլեկտի անվանմամբ, օրինակ՝ 2 × Messkit Standard, և դրա տակ դնում է կոմպլեկտի տողերը։ Կոմպլեկտի ներսի բաժինները դառնում են ենթաբաժիններ։
- Տպման ռեժիմ յուրաքանչյուր կոմպլեկտի համար։ Կոմպլեկտում մեկ անգամ սահմանվում է, թե ինչպես այն տպվի։ Տեղադրելիս օգնականում ռեժիմը կարելի է փոխել այդ մեկ դեպքի համար։
- Տողերի թաքցում։ Առանձին տողեր կարելի է նշել որպես Չտպել (կոմպլեկտում՝ Թաքցված)։ Դրանք հաշվվում են գումարում, բայց ո՛չ տպվում են, ո՛չ էլ ցուցադրվում հաճախորդի պորտալում։ Այս նշանը առաջարկից փոխանցվում է հաշիվ-ապրանքագրին։
- Ֆիքսված գին կոմպլեկտի տողի համար։ Կոմպլեկտի տողը կարող է ունենալ ֆիքսված միավորի գին, որը փոխարինում է գնացուցակի գինը, օրինակ՝ թաքցված գնի ուղղման համար։
Առանց մոդուլի (միայն sale_product_set) | sale_product_set_layout-ով |
|---|---|
| Կոմպլեկտի տողերը՝ որպես առանձին դիրքեր | Բաժնի տող՝ կոմպլեկտի անվանմամբ, քանակը՝ անվանման մեջ, տողերը՝ դրա տակ |
| Կոմպլեկտի ներսի բաժինները մնում են բաժիններ և խախտում են կառուցվածքը | Կոմպլեկտի ներսի բաժինները դառնում են ենթաբաժիններ (line_subsection) |
| Տպման տեսքը միշտ նույնն է | Տպման ռեժիմ յուրաքանչյուր կոմպլեկտի համար՝ տեղադրելիս փոփոխելի |
| Գնի ուղղումը տեսանելի է առաջարկի և հաշիվ-ապրանքագրի վրա | Տողը կարելի է թաքցնել, բայց այն հաշվվում է գումարում |
| Գինը՝ միայն գնացուցակից | Ըստ ցանկության՝ ֆիքսված գին կոմպլեկտի տողի համար |
| Տեսքը ավարտվում է առաջարկով | Տեսքը և թաքցումը գործում են առաջարկի, պատվերի, հաշիվ-ապրանքագրի և հաճախորդի պորտալի համար |
Երեք տպման ռեժիմները մանրամասն
Տպման ռեժիմը print_mode ընտրության դաշտն է ապրանքակոմպլեկտում։ Տեղադրելիս այն թարգմանվում է բաժնի տողի երկու ստանդարտ անջատիչներին։ Դրա համար մոդուլում կա մեկ, հեշտ ընթերցվող համապատասխանեցում․
# Տպման ռեժիմ -> (collapse_prices, collapse_composition) բաժնի տողի համար
PRINT_MODE_FLAGS = {
"detailed": (False, False),
"total_only": (True, False),
"summary": (False, True),
}
Ռեժիմ (print_mode) | Ցուցադրումը կոմպլեկտում | Odoo-ի ստանդարտ տարբերակ | Տպման տեսք |
|---|---|---|---|
detailed | Յուրաքանչյուր տող՝ գնով | չկա | Բաժին, բոլոր տողերը՝ գումարով |
total_only | Տողերը՝ առանց գների, միայն կոմպլեկտի գումարը | collapse_prices (Թաքցնել գները) | Բաժին՝ գումարով, տողերը՝ միայն անվանմամբ և քանակով |
summary | Միայն մեկ տող՝ կոմպլեկտի գումարով | collapse_composition (Թաքցնել բաղադրակազմը) | Միայն բաժնի տողը՝ գումարով |
Քանի որ մոդուլն օգտագործում է Odoo 19-ի ստանդարտ տարբերակները, այլ ոչ թե սեփական տպման ձևաչափ, առաջարկը, պատվերի հաստատումը, հաշիվ-ապրանքագիրը և հաճախորդի պորտալը աշխատում են առանց հարմարեցված հաշվետվության կաղապարների։ Եթե ունեք սեփական հաշվետվության կաղապարներ, որոնք հաշվի են առնում բաժնի տարբերակները, նույն վարքագիծը կստանաք նաև դրանցում։
Թաքցված տողեր և ֆիքսված գին
Հաճախակի դեպք․ փաթեթն ունի փաթեթի գին, որը ցածր է առանձին գների գումարից։ Առանձին գները աղավաղելու փոխարեն վերցնում են ֆիքսված գնով ուղղման տող (օրինակ՝ −50,00 € յուրաքանչյուր կոմպլեկտի համար) և թաքցնում են այն։ Բեքենդում հաշիվ-ապրանքագիրը հետագծելի է, իսկ տպված օրինակում երևում է փաթեթի գինը։
Հասկանալու համար կարևոր է․ hide_in_report նշանը ոչինչ չի փոխում հաշվարկում։ Քանակը, գինը, զեղչը, հարկը, գումարները և հաշվապահական գրանցումները ստեղծվում են անփոփոխ՝ ստանդարտ Odoo-ի կողմից։ Տողը բացակայում է միայն տպված օրինակից և պորտալից։
- Ապրանքակոմպլեկտում՝ կոմպլեկտի տող՝ Թաքցված և ըստ ցանկության՝ Ֆիքսված գին՝ Միավորի գին-ի հետ միասին։
- Առաջարկի և հաշիվ-ապրանքագրի տողերում՝ Չտպել սյունակ (
hide_in_report), նաև սովորական տողերի համար՝ առանց կոմպլեկտի։ - Փոխանցում։ Պատվերից հաշիվ-ապրանքագիր ստեղծելիս նշանը փոխանցվում է հաշիվ-ապրանքագրի տողին։ Առաջարկը պատճենելիս այն պահպանվում է։
Տեխնիկական իրականացում
Մոդուլը միտումնավոր փոքր է․ այն ընդլայնում է առկա մոդելները և վերասահմանում է միայն այն տեղերը, որտեղ Odoo-ն որոշում է՝ որ տողերը տպվեն և ինչպես տեղադրվի կոմպլեկտը։ Նոր հաշվետվության կաղապարներ, նոր մոդելներ և SQL միջամտություններ չկան։
Ընդլայնված մոդելներ և դաշտեր
| Մոդել | Լրացում |
|---|---|
product.set | insert_as_section (Boolean, լռելյայն միացված) և print_mode (ընտրություն, պարտադիր դաշտ, լռելյայն detailed) դաշտեր |
product.set.line | hide_in_report, fixed_price, price_unit դաշտեր․ prepare_sale_order_line_values()-ը դրանք փոխանցում է առաջարկի տողին |
sale.product.set.wizard | insert_as_section, section_name, print_mode դաշտեր․ _prepare_order_lines()-ը կառուցում է բաժնի տողը |
sale.order / sale.order.line | hide_in_report դաշտ (copy=True-ով)․ _get_order_lines_to_report()-ը բաց է թողնում թաքցված տողերը․ _prepare_invoice_line()-ը փոխանցում է նշանը |
account.move / account.move.line | hide_in_report դաշտ․ _get_move_lines_to_report(), _get_detailed_lines() և _get_subsection_lines() զտում են թաքցված տողերը․ _get_aml_vals()-ը նշանը տեղափոխում է հաշվետվության տվյալների մեջ |
Թաքցում առաջարկում
Odoo 19-ը տպվող առաջարկի տողերը որոշում է _get_order_lines_to_report()-ում։ Մոդուլն այնտեղ ավելացնում է զտիչ։ Հաշվետվության կաղապարին միջամտել պետք չէ․ և՛ առաջարկի հաշվետվության կաղապարը (sale/report/ir_actions_report_templates.xml), և՛ պորտալի կաղապարը (sale/views/sale_portal_templates.xml) կանչում են այս մեթոդը՝
class SaleOrder(models.Model):
_inherit = "sale.order"
def _get_order_lines_to_report(self):
return super()._get_order_lines_to_report().filtered(
lambda line: not line.hide_in_report
)
Փոխանցում հաշիվ-ապրանքագրին
Առաջարկի տողից հաշիվ-ապրանքագրի տող ստեղծելիս (_prepare_invoice_line()) նշանը պատճենվում է։ Հաշիվ-ապրանքագրի կողմում Odoo 19-ում տողերը հաշվետվություն են հասնում մի քանի ճանապարհով՝ հիմնական ցանկ, բաժնի տողեր և ենթաբաժնի տողեր։ Այդ պատճառով մոդուլը զտում է մի քանի տեղում (_get_move_lines_to_report() փաստաթղթում, _get_detailed_lines() և _get_subsection_lines() տողում), հակառակ դեպքում թաքցված տողը կարող էր մյուս ճանապարհներով նորից հայտնվել՝
class AccountMoveLine(models.Model):
_inherit = "account.move.line"
hide_in_report = fields.Boolean(string="Hidden in report")
def _get_aml_vals(self, hide_taxes):
res = super()._get_aml_vals(hide_taxes)
res["hide_in_report"] = self.hide_in_report
return res
def _get_detailed_lines(self, children_lines, direct_children_lines, subsection_lines):
res = super()._get_detailed_lines(children_lines, direct_children_lines, subsection_lines)
return [vals for vals in res if not vals.get("hide_in_report")]
def _get_subsection_lines(self, subsection_line, children_lines):
res = super()._get_subsection_lines(subsection_line, children_lines)
return [vals for vals in res if not vals.get("hide_in_report")]
Օգնականը․ բաժին՝ առանձին տողերի փոխարեն
sale_product_set-ի sale.product.set.wizard օգնականը ստեղծում է առաջարկի տողերը _prepare_order_lines()-ում։ Մոդուլը վերասահմանում է այս մեթոդը։ Եթե Տեղադրել որպես բաժին տարբերակը անջատված է, այն պարզապես կանչում է սկզբնական մեթոդը, և վարքագիծը մնում է այնպես, ինչպես OCA մոդուլում։ Հակառակ դեպքում սկզբում ստեղծվում է բաժնի տողը՝ երկու ստանդարտ անջատիչներով, ապա հետևում են կոմպլեկտի տողերը։ Կոմպլեկտի ներսի բաժինները դառնում են ենթաբաժիններ, որպեսզի չխախտեն հիմնական կառուցվածքը՝
def _prepare_order_lines(self):
if not self.insert_as_section:
return super()._prepare_order_lines()
sequence = self._get_max_sequence() + 1
collapse_prices, collapse_composition = PRINT_MODE_FLAGS[self.print_mode or "detailed"]
order_lines = [Command.create({
"display_type": "line_section",
"name": self.section_name or self.product_set_id.name,
"sequence": sequence,
"collapse_prices": collapse_prices,
"collapse_composition": collapse_composition,
})]
for set_line in self._get_lines():
sequence += 1
values = set_line.prepare_sale_order_line_values(self.order_id, self.quantity, sequence)
if values.get("display_type") == "line_section":
values["display_type"] = "line_subsection"
order_lines.append(Command.create(values))
return order_lines
Որոշումներ, որոնք չեն երևում
- Առանձին հաշվարկման մեթոդներ օգնականում։ Բաժնի անվանումը, տպման ռեժիմը և Տեղադրել որպես բաժին-ը յուրաքանչյուրն ունի սեփական
computeմեթոդը (store=True,readonly=False)։ Եթե երեքն էլ ունենային նույն մեթոդը, մի դաշտի համար բացահայտ փոխանցված արժեքը կզրոյացներ մյուսները։ Դա հատկապես նկատելի է, երբ օգնականը ստեղծվում է կոդից կամ թեստերից՝ արժեքներով։ - Բաժնի անվանումը՝ քանակով։ Երբ քանակը 1-ից տարբեր է, այն նշվում է անվանման մեջ (2 × Messkit Standard՝ ստորակետով որպես տասնորդական բաժանիչ), որպեսզի տպված օրինակում երևա, որ դրանք երկու կոմպլեկտ են, այլ ոչ թե մեկ կոմպլեկտ կրկնակի քանակով։
- Ֆիքսված գինը՝ միայն ապրանքային տողերում։
prepare_sale_order_line_values()-ը սահմանում էhide_in_reportևprice_unit-ը միայն այն դեպքում, երբ կոմպլեկտի տողը բաժնի կամ նշումի տող չէ։ - Ստանդարտ Odoo՝ սեփական մշակման փոխարեն։ Տպման ռեժիմը և թաքցումը օգտագործում են Odoo 19-ի առկա hook-երն ու դաշտերը։ Դա թարմացումները դարձնում է կառավարելի․ եթե Odoo-ն փոխի հաշվետվության կաղապարը, մոդուլը մնում է ուժի մեջ, քանի դեռ մեթոդները գոյություն ունեն։
Տեղադրում՝ առանց անցանկալի կողմնակի ազդեցությունների
Նախապայմաններ․ Odoo 19.0, sale_product_set (OCA/sale-workflow, 19.0 ճյուղ) և product_set (OCA/product-attribute, 19.0 ճյուղ)։ Մոդուլն ինքը կախված է sale_management, sale_product_set և account-ից։
auto_install-ի թակարդը OCA մոդուլներում։ Շատ OCA պահոցներ պարունակում են auto_install ունեցող մոդուլներ։ Հենց որ դրանց կախվածությունները առկա են, Odoo-ն հաջորդ տեղադրման կամ թարմացման ժամանակ դրանք տեղադրում է առանց հարցնելու։ Եթե ամբողջ OCA պահոցը դնեք արտադրական օրինակի addons_path-ի մեջ, հնարավոր է՝ ստանաք մոդուլներ, որոնք ոչ ոք չէր ուզում։ OCA/product-attribute-ի դեպքում դա վերաբերում է, օրինակ, purchase_product_template_tags-ին։ Մեր մոտեցումը՝
- Երկու OCA պահոցները կլոնավորել մակերեսային եղանակով (
git clone --depth 1 --branch 19.0)։ - Առանձին գրացուցակում symlink-ով կապել միայն երկու անհրաժեշտ մոդուլները և այդ գրացուցակը ավելացնել
addons_path-ում, այլ ոչ թե ամբողջ պահոցները։ - Տեղադրել թեստային տվյալների բազայում և ստուգել, թե որ մոդուլները ստացան տեղադրված կարգավիճակ։
- Միայն դրանից հետո տեղադրել արտադրական միջավայրում՝
--workers=0-ով, որպեսզի հրամանը HTTP պորտի համար չմրցակցի աշխատող ծառայության հետ։
odoo-bin -c /etc/odoo/odoo.conf -d <datenbank> -i sale_product_set_layout --stop-after-init
Նոր դաշտերն ու դիտարկումները տեղադրումից հետո արդեն տվյալների բազայում են։ Եթե ծառայությունը աշխատում է բազմապրոցես ռեժիմով, worker-ները փոփոխված registry-ն նորից բեռնում են տվյալների բազայի ազդանշանի միջոցով։ Մոդուլի Python ֆայլերի փոփոխությունները ուժի մեջ են մտնում միայն ծառայության վերագործարկումից հետո։
Օգտագործումը քայլ առ քայլ
- Կոմպլեկտ ստեղծել․ Վաճառք → Ապրանքներ → Ապրանքակոմպլեկտներ։ Կոմպլեկտին անուն տալ, ընտրել Տեղադրել որպես բաժին և Տպման ռեժիմ, մուտքագրել ապրանքները՝ քանակներով։ Ուղղման տողերին տալ Թաքցված և Ֆիքսված գին։
- Առաջարկում․ Սեղմել Ավելացնել կոմպլեկտ, ընտրել կոմպլեկտը և քանակը։ Բաժնի անվանումը և տպման ռեժիմը կարելի է փոխել տեղադրելուց առաջ։
- Առանձին տողեր թաքցնել․ Առաջարկում կամ հաշիվ-ապրանքագրում ակտիվացնել Չտպել սյունակը։
- Ստուգել․ Բացել նախադիտումը կամ PDF-ը։ Նույն տեսքը տեսնում են հաճախորդները պորտալում։
Թեստեր
Մոդուլը ներառում է վեց ավտոմատացված թեստ, որոնք մենք գործարկում ենք թեստային տվյալների բազայի դեմ՝ նախքան որևէ բան արտադրական միջավայր անցնելը․
- Տեղադրում որպես բաժին՝ ներառյալ տպման ռեժիմը և ենթաբաժինը
- Թաքցված տողը բացակայում է տպվող տողերից
- Մեկ տող ռեժիմ (
summary) - Տեղադրում՝ առանց բաժնի, սկզբնական վարքագիծը
- Հաշիվ-ապրանքագիրը ընդունում է
hide_in_reportնշանը, տողը բացակայում է_get_move_lines_to_report()-ից, բաժնի գումարը շարունակում է ներառել այն - Հաշիվ-ապրանքագիրը Միայն ընդհանուր գին ռեժիմով թաքցված տողը չի ցուցադրում բաժնի տողերում, բաժնի գումարը մնում է ամբողջական
odoo-bin -d <testdatenbank> -i sale_product_set_layout \
--test-enable --test-tags=/sale_product_set_layout --stop-after-init
Գերմաներեն թարգմանությունը գտնվում է i18n/de.po-ում։
Սահմանափակումներ և իրավական նշում
- Միայն տեսք։ Մոդուլը չի փոխում, թե ինչպես է Odoo-ն հաշվարկում գները, զեղչերը կամ հարկերը։ Այն փոխում է միայն այն, ինչ տպվում և ցուցադրվում է պորտալում։
- Թաքցված տողերը բեքենդում տեսանելի են։ Նշանը վերաբերում է տպված օրինակին և պորտալին, այլ ոչ թե աշխատակիցների էկրանային դիտարկմանը։
- Ստուգեք հաշիվ-ապրանքագրի տվյալները։ Թաքցված տողերը հաշվվում են գումարում, բայց չեն երևում փաստաթղթի վրա։ Արդյո՞ք դա համատեղելի է ձեր երկրում հաշիվ-ապրանքագրերին ներկայացվող պահանջների հետ, օրինակ՝ մատակարարված ապրանքների կամ մատուցված ծառայությունների՝ օրենքով պահանջվող նկարագրության հետ, դա պետք է հաշիվ-ապրանքագրերում կիրառելուց առաջ պարզեք ձեր հարկային խորհրդատուի հետ։ Առաջարկներում թաքցումը ավելի անվտանգ է։ Այս հոդվածը իրավական խորհրդատվություն չէ։
- Փորձարկված է Odoo 19-ի համար։ Մոդուլը մշակել և փորձարկել ենք Odoo 19.0 Community-ի համար։ Այն օգտագործում է բաժնի տարբերակներ, որոնք այս տեսքով առկա են Odoo 19-ում։ Այլ տարբերակների համար մենք այն չենք ստուգել։
Հաճախ տրվող հարցեր
Ինչո՞ւ է ինձ մոդուլը պետք, եթե Odoo 19-ն արդեն գիտի բաժիններ։
Բաժնի տարբերակները Odoo-ում կան։ Բացակայում էր կապը ապրանքակոմպլեկտի հետ․ կոմպլեկտը պետք է ավտոմատ տեղադրվեր որպես բաժին՝ կոմպլեկտում նշված տպման ռեժիմով։ Առանց մոդուլի՝ յուրաքանչյուր տեղադրումից հետո բաժնի տողը պետք է ձեռքով ստեղծել և կարգավորել։
Ինչո՞վ են տարբերվում «Թաքցնել գները» և «Թաքցնել բաղադրակազմը»։
«Թաքցնել գները» (collapse_prices) թողնում է տողերը, բայց գումարներ չի ցուցադրում, միայն՝ բաժնի ընդհանուրը։ «Թաքցնել բաղադրակազմը» (collapse_composition) տողերը լիովին թաքցնում է, հաճախորդը տեսնում է միայն բաժինը՝ գումարով։
Թաքցված տողը հաշվվու՞մ է հաշիվ-ապրանքագրի գումարում։
Այո։ Թաքցված տողերը մնում են գումարում, հարկում և հաշվապահական գրանցման մեջ։ Նշանը վերաբերում է միայն տպված օրինակի և հաճախորդի պորտալի ցուցադրմանը։
Կարո՞ղ եմ տեղադրելիս դեռ փոխել տպման ռեժիմը։
Այո։ Ռեժիմը լռելյայն արժեք է գալիս կոմպլեկտից, օգնականում այն կարելի է փոխել տվյալ տեղադրման համար։ Կոմպլեկտն ինքը մնում է անփոփոխ։
Ի՞նչ կլինի, եթե անջատեմ Տեղադրել որպես բաժին-ը։
Այդ դեպքում օգնականը վարվում է այնպես, ինչպես sale_product_set OCA մոդուլում․ կոմպլեկտի տողերը տեղադրվում են առանց բաժնի։
Մոդուլը անսպասելիորեն այլ մոդուլներ տեղադրու՞մ է։
Մոդուլն ինքը՝ ոչ։ Սակայն OCA պահոցների դեպքում կարող են հայտնվել auto_install մոդուլներ, եթե ամբողջ պահոցները դնեք addons_path-ի մեջ։ Այդ պատճառով միացրեք միայն երկու անհրաժեշտ մոդուլները (տե՛ս «Տեղադրում» բաժինը)։
Մոդուլն աշխատու՞մ է Odoo Enterprise-ի հետ։
Մոդուլը կախված է միայն Community մոդուլներից (sale_management, account) և երկու OCA մոդուլներից։ Մենք այն կիրառում ենք Odoo 19 Community-ում։ Enterprise-ում մենք այն չենք փորձարկել։
Ի՞նչ լիցենզիայով է մոդուլը։
AGPL-3 լիցենզիայով։ Կարող եք այն օգտագործել, հարմարեցնել և փոխանցել, քանի դեռ փոփոխությունները մնում են նույն լիցենզիայի ներքո։ Սխալների և բարելավման առաջարկների համար ողջունվում են issue-ները՝ GitHub պահոցում ։
Biricon IT Services-ի աջակցությունը
Մենք սպասարկում ենք Odoo տեղադրումները փոքր և միջին ձեռնարկությունների համար՝ ներդրումից և հարմարեցումներից մինչև միգրացիաներ և ընթացիկ շահագործում։ Եթե ցանկանում եք Odoo 19-ում ապրանքակոմպլեկտները, առաջարկի կաղապարները կամ հաշվետվությունները հարմարեցնել ձեր աշխատանքային գործընթացներին, կամ եթե ուզում եք այսպիսի մոդուլ ստուգել և անվտանգ կերպով ներդնել ձեր արտադրական օրինակում, ուրախությամբ կօգնենք։ Մեր այլ սեփական մշակումները կգտնեք մեր բլոգում, օրինակ՝ Սևագիր հաշիվ-ապրանքագրերի միավորում և Բանկային վճարումների ավտոմատ համապատասխանեցում հաշիվ-ապրանքագրերի հետ.
Վիճակը՝ 2026 թվականի նոյեմբերի 2։ Մոդուլի տարբերակը՝ 19.0.1.0.0։ Պատկերների օրինակային տվյալները ազատ ընտրված են, գումարները՝ առանց հարկի։