b1sl-python 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (579) hide show
  1. b1sl/__init__.py +5 -0
  2. b1sl/b1sl/__init__.py +56 -0
  3. b1sl/b1sl/_types.py +28 -0
  4. b1sl/b1sl/adapter.py +40 -0
  5. b1sl/b1sl/adapter_protocol.py +28 -0
  6. b1sl/b1sl/async_client.py +268 -0
  7. b1sl/b1sl/async_rest_adapter.py +347 -0
  8. b1sl/b1sl/base_adapter.py +394 -0
  9. b1sl/b1sl/client.py +112 -0
  10. b1sl/b1sl/config.py +138 -0
  11. b1sl/b1sl/config_manager.py +77 -0
  12. b1sl/b1sl/contrib/__init__.py +14 -0
  13. b1sl/b1sl/contrib/django/__init__.py +13 -0
  14. b1sl/b1sl/contrib/django/middleware/__init__.py +27 -0
  15. b1sl/b1sl/contrib/django/middleware/base.py +89 -0
  16. b1sl/b1sl/contrib/django/middleware/odata_decode_middleware.py +20 -0
  17. b1sl/b1sl/contrib/django/middleware/odata_transform_url_middleware.py +20 -0
  18. b1sl/b1sl/entities/__init__.py +2209 -0
  19. b1sl/b1sl/environment.py +36 -0
  20. b1sl/b1sl/exceptions/exceptions.py +142 -0
  21. b1sl/b1sl/fields/__init__.py +2020 -0
  22. b1sl/b1sl/fields/_generated/__init__.py +0 -0
  23. b1sl/b1sl/fields/_generated/complex_types.py +6926 -0
  24. b1sl/b1sl/fields/_generated/entities/__init__.py +0 -0
  25. b1sl/b1sl/fields/_generated/entities/businesspartners.py +544 -0
  26. b1sl/b1sl/fields/_generated/entities/finance.py +451 -0
  27. b1sl/b1sl/fields/_generated/entities/general.py +4587 -0
  28. b1sl/b1sl/fields/_generated/entities/inventory.py +761 -0
  29. b1sl/b1sl/fields/_generated/entities/production.py +256 -0
  30. b1sl/b1sl/fields/_generated/entities/purchasing.py +53 -0
  31. b1sl/b1sl/fields/_generated/entities/sales.py +244 -0
  32. b1sl/b1sl/logging_utils.py +119 -0
  33. b1sl/b1sl/models/__init__.py +13 -0
  34. b1sl/b1sl/models/_generated/__init__.py +0 -0
  35. b1sl/b1sl/models/_generated/_types.py +5 -0
  36. b1sl/b1sl/models/_generated/complex_types.py +6929 -0
  37. b1sl/b1sl/models/_generated/entities/__init__.py +581 -0
  38. b1sl/b1sl/models/_generated/entities/businesspartners.py +565 -0
  39. b1sl/b1sl/models/_generated/entities/finance.py +472 -0
  40. b1sl/b1sl/models/_generated/entities/general.py +4831 -0
  41. b1sl/b1sl/models/_generated/entities/inventory.py +786 -0
  42. b1sl/b1sl/models/_generated/entities/production.py +272 -0
  43. b1sl/b1sl/models/_generated/entities/purchasing.py +64 -0
  44. b1sl/b1sl/models/_generated/entities/sales.py +263 -0
  45. b1sl/b1sl/models/_generated/enums.py +3501 -0
  46. b1sl/b1sl/models/_generated/resources/__init__.py +0 -0
  47. b1sl/b1sl/models/_overrides/inventory.py +24 -0
  48. b1sl/b1sl/models/base.py +209 -0
  49. b1sl/b1sl/models/odata_query_model.py +50 -0
  50. b1sl/b1sl/models/paginated_result.py +85 -0
  51. b1sl/b1sl/models/result.py +17 -0
  52. b1sl/b1sl/resources/__init__.py +11 -0
  53. b1sl/b1sl/resources/_generated/__init__.py +0 -0
  54. b1sl/b1sl/resources/_generated/account_category.py +15 -0
  55. b1sl/b1sl/resources/_generated/account_category_service.py +21 -0
  56. b1sl/b1sl/resources/_generated/account_segmentation_categories.py +15 -0
  57. b1sl/b1sl/resources/_generated/account_segmentations.py +15 -0
  58. b1sl/b1sl/resources/_generated/accounts_service.py +33 -0
  59. b1sl/b1sl/resources/_generated/accrual_types.py +15 -0
  60. b1sl/b1sl/resources/_generated/accrual_types_service.py +21 -0
  61. b1sl/b1sl/resources/_generated/activities.py +15 -0
  62. b1sl/b1sl/resources/_generated/activities_service.py +109 -0
  63. b1sl/b1sl/resources/_generated/activity_locations.py +15 -0
  64. b1sl/b1sl/resources/_generated/activity_recipient_lists.py +15 -0
  65. b1sl/b1sl/resources/_generated/activity_recipient_lists_service.py +21 -0
  66. b1sl/b1sl/resources/_generated/activity_statuses.py +15 -0
  67. b1sl/b1sl/resources/_generated/activity_types.py +15 -0
  68. b1sl/b1sl/resources/_generated/additional_expenses.py +15 -0
  69. b1sl/b1sl/resources/_generated/address_service.py +38 -0
  70. b1sl/b1sl/resources/_generated/alert_managements.py +16 -0
  71. b1sl/b1sl/resources/_generated/alternate_cat_num.py +15 -0
  72. b1sl/b1sl/resources/_generated/alternative_items_service.py +113 -0
  73. b1sl/b1sl/resources/_generated/approval_requests.py +15 -0
  74. b1sl/b1sl/resources/_generated/approval_requests_service.py +33 -0
  75. b1sl/b1sl/resources/_generated/approval_stages.py +15 -0
  76. b1sl/b1sl/resources/_generated/approval_stages_service.py +21 -0
  77. b1sl/b1sl/resources/_generated/approval_templates.py +15 -0
  78. b1sl/b1sl/resources/_generated/approval_templates_service.py +21 -0
  79. b1sl/b1sl/resources/_generated/asset_capitalization.py +15 -0
  80. b1sl/b1sl/resources/_generated/asset_capitalization_credit_memo.py +15 -0
  81. b1sl/b1sl/resources/_generated/asset_capitalization_credit_memo_service.py +37 -0
  82. b1sl/b1sl/resources/_generated/asset_capitalization_service.py +37 -0
  83. b1sl/b1sl/resources/_generated/asset_classes.py +15 -0
  84. b1sl/b1sl/resources/_generated/asset_classes_service.py +21 -0
  85. b1sl/b1sl/resources/_generated/asset_depreciation_groups.py +15 -0
  86. b1sl/b1sl/resources/_generated/asset_depreciation_groups_service.py +21 -0
  87. b1sl/b1sl/resources/_generated/asset_groups.py +15 -0
  88. b1sl/b1sl/resources/_generated/asset_groups_service.py +21 -0
  89. b1sl/b1sl/resources/_generated/asset_manual_depreciation.py +15 -0
  90. b1sl/b1sl/resources/_generated/asset_manual_depreciation_service.py +37 -0
  91. b1sl/b1sl/resources/_generated/asset_retirement.py +15 -0
  92. b1sl/b1sl/resources/_generated/asset_retirement_service.py +37 -0
  93. b1sl/b1sl/resources/_generated/asset_transfer.py +15 -0
  94. b1sl/b1sl/resources/_generated/asset_transfer_service.py +37 -0
  95. b1sl/b1sl/resources/_generated/attachments2.py +15 -0
  96. b1sl/b1sl/resources/_generated/attribute_groups.py +15 -0
  97. b1sl/b1sl/resources/_generated/attribute_groups_service.py +21 -0
  98. b1sl/b1sl/resources/_generated/bank_charges_allocation_codes.py +15 -0
  99. b1sl/b1sl/resources/_generated/bank_charges_allocation_codes_service.py +21 -0
  100. b1sl/b1sl/resources/_generated/bank_pages.py +15 -0
  101. b1sl/b1sl/resources/_generated/bank_statements.py +15 -0
  102. b1sl/b1sl/resources/_generated/bank_statements_service.py +32 -0
  103. b1sl/b1sl/resources/_generated/banks.py +15 -0
  104. b1sl/b1sl/resources/_generated/bar_codes.py +15 -0
  105. b1sl/b1sl/resources/_generated/bar_codes_service.py +21 -0
  106. b1sl/b1sl/resources/_generated/batch_number_details.py +15 -0
  107. b1sl/b1sl/resources/_generated/bill_of_exchange_transactions.py +15 -0
  108. b1sl/b1sl/resources/_generated/bin_location_attributes.py +15 -0
  109. b1sl/b1sl/resources/_generated/bin_location_attributes_service.py +21 -0
  110. b1sl/b1sl/resources/_generated/bin_location_fields.py +15 -0
  111. b1sl/b1sl/resources/_generated/bin_location_fields_service.py +21 -0
  112. b1sl/b1sl/resources/_generated/bin_locations.py +15 -0
  113. b1sl/b1sl/resources/_generated/bin_locations_service.py +21 -0
  114. b1sl/b1sl/resources/_generated/blanket_agreements.py +15 -0
  115. b1sl/b1sl/resources/_generated/blanket_agreements_service.py +21 -0
  116. b1sl/b1sl/resources/_generated/boe_document_types.py +15 -0
  117. b1sl/b1sl/resources/_generated/boe_document_types_service.py +21 -0
  118. b1sl/b1sl/resources/_generated/boe_instructions.py +15 -0
  119. b1sl/b1sl/resources/_generated/boe_instructions_service.py +21 -0
  120. b1sl/b1sl/resources/_generated/boe_lines_service.py +30 -0
  121. b1sl/b1sl/resources/_generated/boe_portfolios.py +15 -0
  122. b1sl/b1sl/resources/_generated/boe_portfolios_service.py +21 -0
  123. b1sl/b1sl/resources/_generated/bp_fiscal_registry_id.py +15 -0
  124. b1sl/b1sl/resources/_generated/bp_opening_balance_service.py +41 -0
  125. b1sl/b1sl/resources/_generated/bp_priorities.py +15 -0
  126. b1sl/b1sl/resources/_generated/branches.py +15 -0
  127. b1sl/b1sl/resources/_generated/branches_service.py +21 -0
  128. b1sl/b1sl/resources/_generated/brazil_beverage_indexers.py +15 -0
  129. b1sl/b1sl/resources/_generated/brazil_beverage_indexers_service.py +21 -0
  130. b1sl/b1sl/resources/_generated/brazil_fuel_indexers.py +15 -0
  131. b1sl/b1sl/resources/_generated/brazil_fuel_indexers_service.py +21 -0
  132. b1sl/b1sl/resources/_generated/brazil_multi_indexers.py +15 -0
  133. b1sl/b1sl/resources/_generated/brazil_numeric_indexers.py +15 -0
  134. b1sl/b1sl/resources/_generated/brazil_string_indexers.py +15 -0
  135. b1sl/b1sl/resources/_generated/budget_distributions.py +15 -0
  136. b1sl/b1sl/resources/_generated/budget_scenarios.py +15 -0
  137. b1sl/b1sl/resources/_generated/budgets.py +15 -0
  138. b1sl/b1sl/resources/_generated/business_partner_groups.py +15 -0
  139. b1sl/b1sl/resources/_generated/business_partner_properties.py +15 -0
  140. b1sl/b1sl/resources/_generated/business_partner_properties_service.py +21 -0
  141. b1sl/b1sl/resources/_generated/business_partners.py +15 -0
  142. b1sl/b1sl/resources/_generated/business_partners_service.py +47 -0
  143. b1sl/b1sl/resources/_generated/business_places.py +15 -0
  144. b1sl/b1sl/resources/_generated/campaign_response_type.py +15 -0
  145. b1sl/b1sl/resources/_generated/campaign_response_type_service.py +21 -0
  146. b1sl/b1sl/resources/_generated/campaigns.py +15 -0
  147. b1sl/b1sl/resources/_generated/campaigns_service.py +21 -0
  148. b1sl/b1sl/resources/_generated/cash_discounts.py +15 -0
  149. b1sl/b1sl/resources/_generated/cash_discounts_service.py +21 -0
  150. b1sl/b1sl/resources/_generated/cash_flow_line_items.py +15 -0
  151. b1sl/b1sl/resources/_generated/cash_flow_line_items_service.py +21 -0
  152. b1sl/b1sl/resources/_generated/certificate_series.py +15 -0
  153. b1sl/b1sl/resources/_generated/certificate_series_service.py +21 -0
  154. b1sl/b1sl/resources/_generated/change_logs_service.py +51 -0
  155. b1sl/b1sl/resources/_generated/chart_of_accounts.py +15 -0
  156. b1sl/b1sl/resources/_generated/check_lines_service.py +38 -0
  157. b1sl/b1sl/resources/_generated/checksfor_payment.py +15 -0
  158. b1sl/b1sl/resources/_generated/choose_from_list.py +15 -0
  159. b1sl/b1sl/resources/_generated/client_mixin.py +3920 -0
  160. b1sl/b1sl/resources/_generated/closing_date_procedure.py +15 -0
  161. b1sl/b1sl/resources/_generated/cockpits.py +15 -0
  162. b1sl/b1sl/resources/_generated/cockpits_service.py +46 -0
  163. b1sl/b1sl/resources/_generated/commission_groups.py +15 -0
  164. b1sl/b1sl/resources/_generated/company_service.py +410 -0
  165. b1sl/b1sl/resources/_generated/contacts.py +15 -0
  166. b1sl/b1sl/resources/_generated/contract_templates.py +15 -0
  167. b1sl/b1sl/resources/_generated/correction_invoice.py +15 -0
  168. b1sl/b1sl/resources/_generated/correction_invoice_reversal.py +15 -0
  169. b1sl/b1sl/resources/_generated/correction_invoice_reversal_service.py +65 -0
  170. b1sl/b1sl/resources/_generated/correction_invoice_service.py +78 -0
  171. b1sl/b1sl/resources/_generated/correction_purchase_invoice.py +15 -0
  172. b1sl/b1sl/resources/_generated/correction_purchase_invoice_reversal.py +15 -0
  173. b1sl/b1sl/resources/_generated/correction_purchase_invoice_reversal_service.py +65 -0
  174. b1sl/b1sl/resources/_generated/correction_purchase_invoice_service.py +78 -0
  175. b1sl/b1sl/resources/_generated/cost_center_types.py +15 -0
  176. b1sl/b1sl/resources/_generated/cost_center_types_service.py +21 -0
  177. b1sl/b1sl/resources/_generated/cost_element_service.py +21 -0
  178. b1sl/b1sl/resources/_generated/cost_elements.py +15 -0
  179. b1sl/b1sl/resources/_generated/counties.py +15 -0
  180. b1sl/b1sl/resources/_generated/counties_service.py +21 -0
  181. b1sl/b1sl/resources/_generated/countries.py +15 -0
  182. b1sl/b1sl/resources/_generated/countries_service.py +21 -0
  183. b1sl/b1sl/resources/_generated/credit_card_payments.py +15 -0
  184. b1sl/b1sl/resources/_generated/credit_cards.py +15 -0
  185. b1sl/b1sl/resources/_generated/credit_lines_service.py +38 -0
  186. b1sl/b1sl/resources/_generated/credit_notes.py +15 -0
  187. b1sl/b1sl/resources/_generated/credit_notes_service.py +100 -0
  188. b1sl/b1sl/resources/_generated/credit_payment_methods.py +15 -0
  189. b1sl/b1sl/resources/_generated/currencies.py +15 -0
  190. b1sl/b1sl/resources/_generated/customer_equipment_cards.py +15 -0
  191. b1sl/b1sl/resources/_generated/customs_declaration.py +15 -0
  192. b1sl/b1sl/resources/_generated/customs_groups.py +15 -0
  193. b1sl/b1sl/resources/_generated/cycle_count_determinations.py +15 -0
  194. b1sl/b1sl/resources/_generated/cycle_count_determinations_service.py +21 -0
  195. b1sl/b1sl/resources/_generated/dashboard_packages_service.py +28 -0
  196. b1sl/b1sl/resources/_generated/deductible_tax_service.py +21 -0
  197. b1sl/b1sl/resources/_generated/deductible_taxes.py +15 -0
  198. b1sl/b1sl/resources/_generated/deduction_tax_groups.py +15 -0
  199. b1sl/b1sl/resources/_generated/deduction_tax_hierarchies.py +15 -0
  200. b1sl/b1sl/resources/_generated/deduction_tax_sub_groups.py +15 -0
  201. b1sl/b1sl/resources/_generated/deduction_tax_sub_groups_service.py +21 -0
  202. b1sl/b1sl/resources/_generated/delivery_notes.py +15 -0
  203. b1sl/b1sl/resources/_generated/delivery_notes_service.py +85 -0
  204. b1sl/b1sl/resources/_generated/departments.py +15 -0
  205. b1sl/b1sl/resources/_generated/departments_service.py +21 -0
  206. b1sl/b1sl/resources/_generated/deposits.py +15 -0
  207. b1sl/b1sl/resources/_generated/deposits_service.py +53 -0
  208. b1sl/b1sl/resources/_generated/depreciation_areas.py +15 -0
  209. b1sl/b1sl/resources/_generated/depreciation_areas_service.py +21 -0
  210. b1sl/b1sl/resources/_generated/depreciation_type_pools.py +15 -0
  211. b1sl/b1sl/resources/_generated/depreciation_type_pools_service.py +21 -0
  212. b1sl/b1sl/resources/_generated/depreciation_types.py +15 -0
  213. b1sl/b1sl/resources/_generated/depreciation_types_service.py +21 -0
  214. b1sl/b1sl/resources/_generated/determination_criterias.py +15 -0
  215. b1sl/b1sl/resources/_generated/determination_criterias_service.py +21 -0
  216. b1sl/b1sl/resources/_generated/dimensions.py +15 -0
  217. b1sl/b1sl/resources/_generated/dimensions_service.py +21 -0
  218. b1sl/b1sl/resources/_generated/distribution_rules.py +15 -0
  219. b1sl/b1sl/resources/_generated/distribution_rules_service.py +21 -0
  220. b1sl/b1sl/resources/_generated/dnf_code_setup.py +15 -0
  221. b1sl/b1sl/resources/_generated/dnf_code_setup_service.py +21 -0
  222. b1sl/b1sl/resources/_generated/down_payments.py +15 -0
  223. b1sl/b1sl/resources/_generated/down_payments_service.py +68 -0
  224. b1sl/b1sl/resources/_generated/drafts.py +15 -0
  225. b1sl/b1sl/resources/_generated/drafts_service.py +86 -0
  226. b1sl/b1sl/resources/_generated/dunning_letters.py +15 -0
  227. b1sl/b1sl/resources/_generated/dunning_terms.py +15 -0
  228. b1sl/b1sl/resources/_generated/dunning_terms_service.py +21 -0
  229. b1sl/b1sl/resources/_generated/dynamic_system_strings.py +15 -0
  230. b1sl/b1sl/resources/_generated/electronic_communication_action_service.py +122 -0
  231. b1sl/b1sl/resources/_generated/electronic_communication_actions_service.py +119 -0
  232. b1sl/b1sl/resources/_generated/electronic_file_formats.py +15 -0
  233. b1sl/b1sl/resources/_generated/electronic_file_formats_service.py +21 -0
  234. b1sl/b1sl/resources/_generated/email_groups.py +15 -0
  235. b1sl/b1sl/resources/_generated/email_groups_service.py +21 -0
  236. b1sl/b1sl/resources/_generated/employee_id_type.py +15 -0
  237. b1sl/b1sl/resources/_generated/employee_id_type_service.py +21 -0
  238. b1sl/b1sl/resources/_generated/employee_position.py +15 -0
  239. b1sl/b1sl/resources/_generated/employee_position_service.py +21 -0
  240. b1sl/b1sl/resources/_generated/employee_roles_setup.py +15 -0
  241. b1sl/b1sl/resources/_generated/employee_roles_setup_service.py +21 -0
  242. b1sl/b1sl/resources/_generated/employee_status.py +15 -0
  243. b1sl/b1sl/resources/_generated/employee_status_service.py +21 -0
  244. b1sl/b1sl/resources/_generated/employee_transfers.py +15 -0
  245. b1sl/b1sl/resources/_generated/employee_transfers_service.py +21 -0
  246. b1sl/b1sl/resources/_generated/employees_info.py +15 -0
  247. b1sl/b1sl/resources/_generated/employment_category_service.py +21 -0
  248. b1sl/b1sl/resources/_generated/employment_categorys.py +15 -0
  249. b1sl/b1sl/resources/_generated/enhanced_discount_groups.py +15 -0
  250. b1sl/b1sl/resources/_generated/enhanced_discount_groups_service.py +21 -0
  251. b1sl/b1sl/resources/_generated/exceptional_event_service.py +21 -0
  252. b1sl/b1sl/resources/_generated/exceptional_events.py +15 -0
  253. b1sl/b1sl/resources/_generated/extended_translations.py +15 -0
  254. b1sl/b1sl/resources/_generated/extended_translations_service.py +21 -0
  255. b1sl/b1sl/resources/_generated/external_calls_service.py +54 -0
  256. b1sl/b1sl/resources/_generated/external_reconciliations_service.py +104 -0
  257. b1sl/b1sl/resources/_generated/fa_account_determinations.py +15 -0
  258. b1sl/b1sl/resources/_generated/fa_account_determinations_service.py +21 -0
  259. b1sl/b1sl/resources/_generated/factoring_indicators.py +15 -0
  260. b1sl/b1sl/resources/_generated/financial_years.py +15 -0
  261. b1sl/b1sl/resources/_generated/financial_years_service.py +21 -0
  262. b1sl/b1sl/resources/_generated/fiscal_printer.py +15 -0
  263. b1sl/b1sl/resources/_generated/fiscal_printer_service.py +21 -0
  264. b1sl/b1sl/resources/_generated/fixed_asset_items_service.py +55 -0
  265. b1sl/b1sl/resources/_generated/form_preferences.py +15 -0
  266. b1sl/b1sl/resources/_generated/formatted_searches.py +15 -0
  267. b1sl/b1sl/resources/_generated/forms1099.py +15 -0
  268. b1sl/b1sl/resources/_generated/gl_account_advanced_rules.py +15 -0
  269. b1sl/b1sl/resources/_generated/gl_account_advanced_rules_service.py +21 -0
  270. b1sl/b1sl/resources/_generated/goods_return_request.py +15 -0
  271. b1sl/b1sl/resources/_generated/goods_return_request_service.py +69 -0
  272. b1sl/b1sl/resources/_generated/gov_pay_codes.py +15 -0
  273. b1sl/b1sl/resources/_generated/gov_pay_codes_service.py +21 -0
  274. b1sl/b1sl/resources/_generated/gt_is_service.py +28 -0
  275. b1sl/b1sl/resources/_generated/holidays.py +15 -0
  276. b1sl/b1sl/resources/_generated/house_bank_accounts.py +15 -0
  277. b1sl/b1sl/resources/_generated/incoming_payments.py +15 -0
  278. b1sl/b1sl/resources/_generated/india_hsn.py +15 -0
  279. b1sl/b1sl/resources/_generated/india_hsn_service.py +21 -0
  280. b1sl/b1sl/resources/_generated/industries.py +15 -0
  281. b1sl/b1sl/resources/_generated/integration_packages_configure.py +15 -0
  282. b1sl/b1sl/resources/_generated/integration_packages_configure_service.py +21 -0
  283. b1sl/b1sl/resources/_generated/internal_reconciliations.py +15 -0
  284. b1sl/b1sl/resources/_generated/internal_reconciliations_service.py +51 -0
  285. b1sl/b1sl/resources/_generated/intrastat_configuration.py +15 -0
  286. b1sl/b1sl/resources/_generated/intrastat_configuration_service.py +21 -0
  287. b1sl/b1sl/resources/_generated/inventory_countings.py +15 -0
  288. b1sl/b1sl/resources/_generated/inventory_countings_service.py +21 -0
  289. b1sl/b1sl/resources/_generated/inventory_cycles.py +15 -0
  290. b1sl/b1sl/resources/_generated/inventory_gen_entries.py +15 -0
  291. b1sl/b1sl/resources/_generated/inventory_gen_entry_service.py +67 -0
  292. b1sl/b1sl/resources/_generated/inventory_gen_exit_service.py +66 -0
  293. b1sl/b1sl/resources/_generated/inventory_gen_exits.py +15 -0
  294. b1sl/b1sl/resources/_generated/inventory_opening_balances.py +15 -0
  295. b1sl/b1sl/resources/_generated/inventory_opening_balances_service.py +21 -0
  296. b1sl/b1sl/resources/_generated/inventory_postings.py +15 -0
  297. b1sl/b1sl/resources/_generated/inventory_postings_service.py +34 -0
  298. b1sl/b1sl/resources/_generated/inventory_transfer_requests.py +15 -0
  299. b1sl/b1sl/resources/_generated/inventory_transfer_requests_service.py +43 -0
  300. b1sl/b1sl/resources/_generated/invoices.py +15 -0
  301. b1sl/b1sl/resources/_generated/invoices_service.py +100 -0
  302. b1sl/b1sl/resources/_generated/item_groups.py +15 -0
  303. b1sl/b1sl/resources/_generated/item_properties.py +15 -0
  304. b1sl/b1sl/resources/_generated/items.py +15 -0
  305. b1sl/b1sl/resources/_generated/journal_entries.py +15 -0
  306. b1sl/b1sl/resources/_generated/journal_entry_document_type_service.py +21 -0
  307. b1sl/b1sl/resources/_generated/journal_entry_document_types.py +15 -0
  308. b1sl/b1sl/resources/_generated/journal_vouchers_service.py +45 -0
  309. b1sl/b1sl/resources/_generated/knowledge_base_solutions.py +15 -0
  310. b1sl/b1sl/resources/_generated/kp_is.py +15 -0
  311. b1sl/b1sl/resources/_generated/kp_is_service.py +21 -0
  312. b1sl/b1sl/resources/_generated/landed_costs.py +15 -0
  313. b1sl/b1sl/resources/_generated/landed_costs_codes.py +15 -0
  314. b1sl/b1sl/resources/_generated/landed_costs_service.py +21 -0
  315. b1sl/b1sl/resources/_generated/legal_data.py +15 -0
  316. b1sl/b1sl/resources/_generated/length_measures.py +15 -0
  317. b1sl/b1sl/resources/_generated/license_service.py +21 -0
  318. b1sl/b1sl/resources/_generated/local_era.py +15 -0
  319. b1sl/b1sl/resources/_generated/manufacturers.py +15 -0
  320. b1sl/b1sl/resources/_generated/material_groups.py +15 -0
  321. b1sl/b1sl/resources/_generated/material_groups_service.py +21 -0
  322. b1sl/b1sl/resources/_generated/material_revaluation.py +15 -0
  323. b1sl/b1sl/resources/_generated/material_revaluation_fifo_service.py +33 -0
  324. b1sl/b1sl/resources/_generated/material_revaluation_snb_service.py +33 -0
  325. b1sl/b1sl/resources/_generated/messages.py +15 -0
  326. b1sl/b1sl/resources/_generated/messages_service.py +35 -0
  327. b1sl/b1sl/resources/_generated/mobile_add_on_setting.py +15 -0
  328. b1sl/b1sl/resources/_generated/mobile_add_on_setting_service.py +21 -0
  329. b1sl/b1sl/resources/_generated/mobile_app_service.py +240 -0
  330. b1sl/b1sl/resources/_generated/multi_language_translations.py +15 -0
  331. b1sl/b1sl/resources/_generated/nature_of_assessees.py +15 -0
  332. b1sl/b1sl/resources/_generated/nature_of_assessees_service.py +21 -0
  333. b1sl/b1sl/resources/_generated/ncm_codes_setup.py +15 -0
  334. b1sl/b1sl/resources/_generated/ncm_codes_setup_service.py +21 -0
  335. b1sl/b1sl/resources/_generated/nf_models.py +15 -0
  336. b1sl/b1sl/resources/_generated/nf_models_service.py +21 -0
  337. b1sl/b1sl/resources/_generated/nf_tax_categories.py +15 -0
  338. b1sl/b1sl/resources/_generated/nf_tax_categories_service.py +21 -0
  339. b1sl/b1sl/resources/_generated/nota_fiscal_cfop.py +15 -0
  340. b1sl/b1sl/resources/_generated/nota_fiscal_cst.py +15 -0
  341. b1sl/b1sl/resources/_generated/nota_fiscal_usage.py +15 -0
  342. b1sl/b1sl/resources/_generated/occurrence_codes.py +15 -0
  343. b1sl/b1sl/resources/_generated/occurrence_codes_service.py +21 -0
  344. b1sl/b1sl/resources/_generated/orders.py +15 -0
  345. b1sl/b1sl/resources/_generated/orders_service.py +94 -0
  346. b1sl/b1sl/resources/_generated/packages_types.py +15 -0
  347. b1sl/b1sl/resources/_generated/partners_setups.py +15 -0
  348. b1sl/b1sl/resources/_generated/partners_setups_service.py +21 -0
  349. b1sl/b1sl/resources/_generated/payment_blocks.py +15 -0
  350. b1sl/b1sl/resources/_generated/payment_blocks_service.py +21 -0
  351. b1sl/b1sl/resources/_generated/payment_calculation_service.py +37 -0
  352. b1sl/b1sl/resources/_generated/payment_drafts.py +15 -0
  353. b1sl/b1sl/resources/_generated/payment_reason_code_service.py +21 -0
  354. b1sl/b1sl/resources/_generated/payment_reason_codes.py +15 -0
  355. b1sl/b1sl/resources/_generated/payment_run_export.py +15 -0
  356. b1sl/b1sl/resources/_generated/payment_terms_types.py +15 -0
  357. b1sl/b1sl/resources/_generated/payment_terms_types_service.py +28 -0
  358. b1sl/b1sl/resources/_generated/pick_lists.py +15 -0
  359. b1sl/b1sl/resources/_generated/pick_lists_service.py +78 -0
  360. b1sl/b1sl/resources/_generated/pos_daily_summary.py +15 -0
  361. b1sl/b1sl/resources/_generated/predefined_texts.py +15 -0
  362. b1sl/b1sl/resources/_generated/predefined_texts_service.py +21 -0
  363. b1sl/b1sl/resources/_generated/price_lists.py +15 -0
  364. b1sl/b1sl/resources/_generated/product_trees.py +15 -0
  365. b1sl/b1sl/resources/_generated/production_orders.py +15 -0
  366. b1sl/b1sl/resources/_generated/profit_centers.py +15 -0
  367. b1sl/b1sl/resources/_generated/profit_centers_service.py +21 -0
  368. b1sl/b1sl/resources/_generated/project_management_configuration_service.py +333 -0
  369. b1sl/b1sl/resources/_generated/project_management_service.py +104 -0
  370. b1sl/b1sl/resources/_generated/project_management_time_sheet.py +15 -0
  371. b1sl/b1sl/resources/_generated/project_managements.py +15 -0
  372. b1sl/b1sl/resources/_generated/projects.py +15 -0
  373. b1sl/b1sl/resources/_generated/projects_service.py +21 -0
  374. b1sl/b1sl/resources/_generated/purchase_credit_notes.py +15 -0
  375. b1sl/b1sl/resources/_generated/purchase_credit_notes_service.py +85 -0
  376. b1sl/b1sl/resources/_generated/purchase_delivery_notes.py +15 -0
  377. b1sl/b1sl/resources/_generated/purchase_delivery_notes_service.py +85 -0
  378. b1sl/b1sl/resources/_generated/purchase_down_payments.py +15 -0
  379. b1sl/b1sl/resources/_generated/purchase_down_payments_service.py +70 -0
  380. b1sl/b1sl/resources/_generated/purchase_invoices.py +15 -0
  381. b1sl/b1sl/resources/_generated/purchase_invoices_service.py +85 -0
  382. b1sl/b1sl/resources/_generated/purchase_orders.py +15 -0
  383. b1sl/b1sl/resources/_generated/purchase_orders_service.py +69 -0
  384. b1sl/b1sl/resources/_generated/purchase_quotations.py +15 -0
  385. b1sl/b1sl/resources/_generated/purchase_quotations_service.py +70 -0
  386. b1sl/b1sl/resources/_generated/purchase_request_service.py +68 -0
  387. b1sl/b1sl/resources/_generated/purchase_requests.py +15 -0
  388. b1sl/b1sl/resources/_generated/purchase_returns.py +15 -0
  389. b1sl/b1sl/resources/_generated/purchase_returns_service.py +85 -0
  390. b1sl/b1sl/resources/_generated/purchase_tax_invoices.py +15 -0
  391. b1sl/b1sl/resources/_generated/qr_code_service.py +33 -0
  392. b1sl/b1sl/resources/_generated/query_auth_groups.py +15 -0
  393. b1sl/b1sl/resources/_generated/query_categories.py +15 -0
  394. b1sl/b1sl/resources/_generated/query_service.py +29 -0
  395. b1sl/b1sl/resources/_generated/queue.py +15 -0
  396. b1sl/b1sl/resources/_generated/quotations.py +15 -0
  397. b1sl/b1sl/resources/_generated/quotations_service.py +69 -0
  398. b1sl/b1sl/resources/_generated/recurring_transaction_service.py +67 -0
  399. b1sl/b1sl/resources/_generated/relationships.py +15 -0
  400. b1sl/b1sl/resources/_generated/report_filter.py +15 -0
  401. b1sl/b1sl/resources/_generated/report_filter_service.py +30 -0
  402. b1sl/b1sl/resources/_generated/report_layouts_service.py +237 -0
  403. b1sl/b1sl/resources/_generated/report_types.py +15 -0
  404. b1sl/b1sl/resources/_generated/report_types_service.py +21 -0
  405. b1sl/b1sl/resources/_generated/resource_capacities.py +15 -0
  406. b1sl/b1sl/resources/_generated/resource_capacities_service.py +34 -0
  407. b1sl/b1sl/resources/_generated/resource_groups.py +15 -0
  408. b1sl/b1sl/resources/_generated/resource_groups_service.py +21 -0
  409. b1sl/b1sl/resources/_generated/resource_properties.py +15 -0
  410. b1sl/b1sl/resources/_generated/resource_properties_service.py +21 -0
  411. b1sl/b1sl/resources/_generated/resources.py +15 -0
  412. b1sl/b1sl/resources/_generated/resources_service.py +21 -0
  413. b1sl/b1sl/resources/_generated/retorno_codes.py +15 -0
  414. b1sl/b1sl/resources/_generated/retorno_codes_service.py +21 -0
  415. b1sl/b1sl/resources/_generated/return_request.py +15 -0
  416. b1sl/b1sl/resources/_generated/return_request_service.py +69 -0
  417. b1sl/b1sl/resources/_generated/returns.py +15 -0
  418. b1sl/b1sl/resources/_generated/returns_service.py +85 -0
  419. b1sl/b1sl/resources/_generated/route_stages.py +15 -0
  420. b1sl/b1sl/resources/_generated/route_stages_service.py +21 -0
  421. b1sl/b1sl/resources/_generated/sales_forecast.py +15 -0
  422. b1sl/b1sl/resources/_generated/sales_opportunities.py +15 -0
  423. b1sl/b1sl/resources/_generated/sales_opportunity_competitors_setup.py +15 -0
  424. b1sl/b1sl/resources/_generated/sales_opportunity_competitors_setup_service.py +21 -0
  425. b1sl/b1sl/resources/_generated/sales_opportunity_interests_setup.py +15 -0
  426. b1sl/b1sl/resources/_generated/sales_opportunity_interests_setup_service.py +21 -0
  427. b1sl/b1sl/resources/_generated/sales_opportunity_reasons_setup.py +15 -0
  428. b1sl/b1sl/resources/_generated/sales_opportunity_reasons_setup_service.py +21 -0
  429. b1sl/b1sl/resources/_generated/sales_opportunity_sources_setup.py +15 -0
  430. b1sl/b1sl/resources/_generated/sales_opportunity_sources_setup_service.py +21 -0
  431. b1sl/b1sl/resources/_generated/sales_persons.py +15 -0
  432. b1sl/b1sl/resources/_generated/sales_stages.py +15 -0
  433. b1sl/b1sl/resources/_generated/sales_tax_authorities.py +15 -0
  434. b1sl/b1sl/resources/_generated/sales_tax_authorities_types.py +15 -0
  435. b1sl/b1sl/resources/_generated/sales_tax_codes.py +15 -0
  436. b1sl/b1sl/resources/_generated/sales_tax_invoices.py +15 -0
  437. b1sl/b1sl/resources/_generated/sbo_bob_service.py +89 -0
  438. b1sl/b1sl/resources/_generated/sections.py +15 -0
  439. b1sl/b1sl/resources/_generated/sections_service.py +21 -0
  440. b1sl/b1sl/resources/_generated/self_credit_memo_service.py +69 -0
  441. b1sl/b1sl/resources/_generated/self_credit_memos.py +15 -0
  442. b1sl/b1sl/resources/_generated/self_invoice_service.py +69 -0
  443. b1sl/b1sl/resources/_generated/self_invoices.py +15 -0
  444. b1sl/b1sl/resources/_generated/serial_number_details.py +15 -0
  445. b1sl/b1sl/resources/_generated/series_service.py +305 -0
  446. b1sl/b1sl/resources/_generated/service_call_origins.py +15 -0
  447. b1sl/b1sl/resources/_generated/service_call_origins_service.py +21 -0
  448. b1sl/b1sl/resources/_generated/service_call_problem_sub_types.py +15 -0
  449. b1sl/b1sl/resources/_generated/service_call_problem_sub_types_service.py +21 -0
  450. b1sl/b1sl/resources/_generated/service_call_problem_types.py +15 -0
  451. b1sl/b1sl/resources/_generated/service_call_problem_types_service.py +21 -0
  452. b1sl/b1sl/resources/_generated/service_call_solution_status.py +15 -0
  453. b1sl/b1sl/resources/_generated/service_call_solution_status_service.py +21 -0
  454. b1sl/b1sl/resources/_generated/service_call_status.py +15 -0
  455. b1sl/b1sl/resources/_generated/service_call_status_service.py +21 -0
  456. b1sl/b1sl/resources/_generated/service_call_types.py +15 -0
  457. b1sl/b1sl/resources/_generated/service_call_types_service.py +21 -0
  458. b1sl/b1sl/resources/_generated/service_calls.py +15 -0
  459. b1sl/b1sl/resources/_generated/service_contracts.py +15 -0
  460. b1sl/b1sl/resources/_generated/service_groups.py +15 -0
  461. b1sl/b1sl/resources/_generated/service_groups_service.py +21 -0
  462. b1sl/b1sl/resources/_generated/service_tax_posting_service.py +36 -0
  463. b1sl/b1sl/resources/_generated/shipping_types.py +15 -0
  464. b1sl/b1sl/resources/_generated/short_link_mappings_service.py +26 -0
  465. b1sl/b1sl/resources/_generated/special_prices.py +15 -0
  466. b1sl/b1sl/resources/_generated/states.py +15 -0
  467. b1sl/b1sl/resources/_generated/states_service.py +21 -0
  468. b1sl/b1sl/resources/_generated/stock_takings.py +15 -0
  469. b1sl/b1sl/resources/_generated/stock_transfer_draft_service.py +34 -0
  470. b1sl/b1sl/resources/_generated/stock_transfer_drafts.py +15 -0
  471. b1sl/b1sl/resources/_generated/stock_transfer_service.py +43 -0
  472. b1sl/b1sl/resources/_generated/stock_transfers.py +15 -0
  473. b1sl/b1sl/resources/_generated/target_groups.py +15 -0
  474. b1sl/b1sl/resources/_generated/target_groups_service.py +21 -0
  475. b1sl/b1sl/resources/_generated/tax_code_determinations.py +15 -0
  476. b1sl/b1sl/resources/_generated/tax_code_determinations_service.py +21 -0
  477. b1sl/b1sl/resources/_generated/tax_code_determinations_tcd.py +15 -0
  478. b1sl/b1sl/resources/_generated/tax_code_determinations_tcd_service.py +21 -0
  479. b1sl/b1sl/resources/_generated/tax_invoice_report.py +15 -0
  480. b1sl/b1sl/resources/_generated/tax_web_sites.py +15 -0
  481. b1sl/b1sl/resources/_generated/tax_web_sites_service.py +27 -0
  482. b1sl/b1sl/resources/_generated/teams.py +15 -0
  483. b1sl/b1sl/resources/_generated/termination_reason.py +15 -0
  484. b1sl/b1sl/resources/_generated/termination_reason_service.py +21 -0
  485. b1sl/b1sl/resources/_generated/territories.py +15 -0
  486. b1sl/b1sl/resources/_generated/tracking_notes.py +15 -0
  487. b1sl/b1sl/resources/_generated/tracking_notes_service.py +21 -0
  488. b1sl/b1sl/resources/_generated/transaction_codes.py +15 -0
  489. b1sl/b1sl/resources/_generated/transaction_codes_service.py +21 -0
  490. b1sl/b1sl/resources/_generated/transportation_document.py +15 -0
  491. b1sl/b1sl/resources/_generated/tsr_exceptional_event_service.py +21 -0
  492. b1sl/b1sl/resources/_generated/tsr_exceptional_events.py +15 -0
  493. b1sl/b1sl/resources/_generated/unit_of_measurement_groups.py +15 -0
  494. b1sl/b1sl/resources/_generated/unit_of_measurement_groups_service.py +21 -0
  495. b1sl/b1sl/resources/_generated/unit_of_measurements.py +15 -0
  496. b1sl/b1sl/resources/_generated/unit_of_measurements_service.py +21 -0
  497. b1sl/b1sl/resources/_generated/user_default_groups.py +15 -0
  498. b1sl/b1sl/resources/_generated/user_fields_md.py +15 -0
  499. b1sl/b1sl/resources/_generated/user_keys_md.py +15 -0
  500. b1sl/b1sl/resources/_generated/user_languages.py +15 -0
  501. b1sl/b1sl/resources/_generated/user_menu_service.py +103 -0
  502. b1sl/b1sl/resources/_generated/user_objects_md.py +15 -0
  503. b1sl/b1sl/resources/_generated/user_permission_tree.py +15 -0
  504. b1sl/b1sl/resources/_generated/user_queries.py +15 -0
  505. b1sl/b1sl/resources/_generated/user_tables_md.py +15 -0
  506. b1sl/b1sl/resources/_generated/users.py +15 -0
  507. b1sl/b1sl/resources/_generated/users_service.py +21 -0
  508. b1sl/b1sl/resources/_generated/value_mapping.py +15 -0
  509. b1sl/b1sl/resources/_generated/value_mapping_communication.py +15 -0
  510. b1sl/b1sl/resources/_generated/value_mapping_service.py +64 -0
  511. b1sl/b1sl/resources/_generated/vat_groups.py +15 -0
  512. b1sl/b1sl/resources/_generated/vendor_payments.py +15 -0
  513. b1sl/b1sl/resources/_generated/w_tax_type_code_service.py +21 -0
  514. b1sl/b1sl/resources/_generated/w_tax_type_codes.py +15 -0
  515. b1sl/b1sl/resources/_generated/warehouse_locations.py +15 -0
  516. b1sl/b1sl/resources/_generated/warehouse_sublevel_codes.py +15 -0
  517. b1sl/b1sl/resources/_generated/warehouse_sublevel_codes_service.py +21 -0
  518. b1sl/b1sl/resources/_generated/warehouses.py +15 -0
  519. b1sl/b1sl/resources/_generated/web_client_bookmark_tile_service.py +21 -0
  520. b1sl/b1sl/resources/_generated/web_client_bookmark_tiles.py +15 -0
  521. b1sl/b1sl/resources/_generated/web_client_dashboard_service.py +21 -0
  522. b1sl/b1sl/resources/_generated/web_client_dashboards.py +15 -0
  523. b1sl/b1sl/resources/_generated/web_client_form_setting_service.py +21 -0
  524. b1sl/b1sl/resources/_generated/web_client_form_settings.py +15 -0
  525. b1sl/b1sl/resources/_generated/web_client_launchpad_service.py +21 -0
  526. b1sl/b1sl/resources/_generated/web_client_launchpads.py +15 -0
  527. b1sl/b1sl/resources/_generated/web_client_listview_filter_service.py +21 -0
  528. b1sl/b1sl/resources/_generated/web_client_listview_filters.py +15 -0
  529. b1sl/b1sl/resources/_generated/web_client_notification_service.py +21 -0
  530. b1sl/b1sl/resources/_generated/web_client_notifications.py +15 -0
  531. b1sl/b1sl/resources/_generated/web_client_preference_service.py +21 -0
  532. b1sl/b1sl/resources/_generated/web_client_preferences.py +15 -0
  533. b1sl/b1sl/resources/_generated/web_client_recent_activities.py +15 -0
  534. b1sl/b1sl/resources/_generated/web_client_recent_activity_service.py +21 -0
  535. b1sl/b1sl/resources/_generated/web_client_variant_group_service.py +21 -0
  536. b1sl/b1sl/resources/_generated/web_client_variant_groups.py +15 -0
  537. b1sl/b1sl/resources/_generated/web_client_variant_service.py +21 -0
  538. b1sl/b1sl/resources/_generated/web_client_variants.py +15 -0
  539. b1sl/b1sl/resources/_generated/weight_measures.py +15 -0
  540. b1sl/b1sl/resources/_generated/withholding_tax_codes.py +15 -0
  541. b1sl/b1sl/resources/_generated/witholding_tax_definition.py +15 -0
  542. b1sl/b1sl/resources/_generated/wizard_payment_methods.py +15 -0
  543. b1sl/b1sl/resources/_generated/workflow_task_service.py +47 -0
  544. b1sl/b1sl/resources/async_base.py +60 -0
  545. b1sl/b1sl/resources/base.py +159 -0
  546. b1sl/b1sl/resources/udo.py +78 -0
  547. b1sl/b1sl/rest_adapter.py +351 -0
  548. b1sl/b1sl/testing.py +24 -0
  549. b1sl/b1sl/tests/__init__.py +0 -0
  550. b1sl/b1sl/tests/test_01_settings.py +60 -0
  551. b1sl/b1sl/tests/test_02_rest_adapter.py +177 -0
  552. b1sl/b1sl/tests/test_03_items_endpoint.py +172 -0
  553. b1sl/b1sl/tests/test_04_serialnumberdetails_endpoint.py +181 -0
  554. b1sl/b1sl/tests/test_observability.py +153 -0
  555. b1sl/b1sl/tests/test_utils.py +24 -0
  556. b1sl/contrib/__init__.py +0 -0
  557. b1sl/contrib/django/__init__.py +15 -0
  558. b1sl/contrib/django/base.py +89 -0
  559. b1sl/contrib/django/odata_decode_middleware.py +14 -0
  560. b1sl/contrib/django/odata_transform_url_middleware.py +15 -0
  561. b1sl/py.typed +0 -0
  562. b1sl/saphdb/__init__.py +19 -0
  563. b1sl/saphdb/adapter.py +24 -0
  564. b1sl/saphdb/client.py +50 -0
  565. b1sl/saphdb/config.py +68 -0
  566. b1sl/saphdb/endpoints/serialnumberdetailodbc.py +100 -0
  567. b1sl/saphdb/exceptions/exceptions.py +19 -0
  568. b1sl/saphdb/main.py +18 -0
  569. b1sl/saphdb/models/result.py +18 -0
  570. b1sl/saphdb/models/serial.py +37 -0
  571. b1sl/saphdb/odbc_adapter.py +220 -0
  572. b1sl/saphdb/tests/__init__.py +0 -0
  573. b1sl/saphdb/tests/test_01_settings.py +37 -0
  574. b1sl/saphdb/tests/test_02_odbc_adapter.py +96 -0
  575. b1sl/saphdb/tests/test_04_serialnumberdetails_endpoint.py +131 -0
  576. b1sl_python-0.1.0.dist-info/METADATA +169 -0
  577. b1sl_python-0.1.0.dist-info/RECORD +579 -0
  578. b1sl_python-0.1.0.dist-info/WHEEL +4 -0
  579. b1sl_python-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,256 @@
1
+ from __future__ import annotations
2
+ from enum import StrEnum
3
+
4
+ class ProductTreeFields(StrEnum):
5
+ tree_code = 'TreeCode'
6
+ tree_type = 'TreeType'
7
+ quantity = 'Quantity'
8
+ distribution_rule = 'DistributionRule'
9
+ project = 'Project'
10
+ distribution_rule2 = 'DistributionRule2'
11
+ distribution_rule3 = 'DistributionRule3'
12
+ distribution_rule4 = 'DistributionRule4'
13
+ distribution_rule5 = 'DistributionRule5'
14
+ price_list = 'PriceList'
15
+ warehouse = 'Warehouse'
16
+ plan_avg_prod_size = 'PlanAvgProdSize'
17
+ hide_bom_components_in_printout = 'HideBOMComponentsInPrintout'
18
+ product_description = 'ProductDescription'
19
+ attachment_entry = 'AttachmentEntry'
20
+ product_tree_lines = 'ProductTreeLines'
21
+ product_tree_stages = 'ProductTreeStages'
22
+ item = 'Item'
23
+ distribution_rule6 = 'DistributionRule6'
24
+ project2 = 'Project2'
25
+ price_list2 = 'PriceList2'
26
+ attachments2 = 'Attachments2'
27
+ production_orders = 'ProductionOrders'
28
+
29
+ class ProductionOrderFields(StrEnum):
30
+ absolute_entry = 'AbsoluteEntry'
31
+ document_number = 'DocumentNumber'
32
+ series = 'Series'
33
+ item_no = 'ItemNo'
34
+ production_order_status = 'ProductionOrderStatus'
35
+ production_order_type = 'ProductionOrderType'
36
+ planned_quantity = 'PlannedQuantity'
37
+ completed_quantity = 'CompletedQuantity'
38
+ rejected_quantity = 'RejectedQuantity'
39
+ posting_date = 'PostingDate'
40
+ due_date = 'DueDate'
41
+ production_order_origin_entry = 'ProductionOrderOriginEntry'
42
+ production_order_origin_number = 'ProductionOrderOriginNumber'
43
+ production_order_origin = 'ProductionOrderOrigin'
44
+ user_signature = 'UserSignature'
45
+ remarks = 'Remarks'
46
+ closing_date = 'ClosingDate'
47
+ release_date = 'ReleaseDate'
48
+ customer_code = 'CustomerCode'
49
+ warehouse = 'Warehouse'
50
+ inventory_uom = 'InventoryUOM'
51
+ journal_remarks = 'JournalRemarks'
52
+ transaction_number = 'TransactionNumber'
53
+ creation_date = 'CreationDate'
54
+ printed = 'Printed'
55
+ distribution_rule = 'DistributionRule'
56
+ project = 'Project'
57
+ distribution_rule2 = 'DistributionRule2'
58
+ distribution_rule3 = 'DistributionRule3'
59
+ distribution_rule4 = 'DistributionRule4'
60
+ distribution_rule5 = 'DistributionRule5'
61
+ uo_m_entry = 'UoMEntry'
62
+ start_date = 'StartDate'
63
+ product_description = 'ProductDescription'
64
+ priority = 'Priority'
65
+ routing_date_calculation = 'RoutingDateCalculation'
66
+ update_allocation = 'UpdateAllocation'
67
+ sap_passport = 'SAPPassport'
68
+ attachment_entry = 'AttachmentEntry'
69
+ pick_remarks = 'PickRemarks'
70
+ production_order_lines = 'ProductionOrderLines'
71
+ production_orders_sales_order_lines = 'ProductionOrdersSalesOrderLines'
72
+ production_orders_stages = 'ProductionOrdersStages'
73
+ production_orders_document_references = 'ProductionOrdersDocumentReferences'
74
+ product_tree = 'ProductTree'
75
+ user = 'User'
76
+ business_partner = 'BusinessPartner'
77
+ warehouse2 = 'Warehouse2'
78
+ journal_entry = 'JournalEntry'
79
+ distribution_rule6 = 'DistributionRule6'
80
+ project2 = 'Project2'
81
+ unit_of_measurement = 'UnitOfMeasurement'
82
+ attachments2 = 'Attachments2'
83
+
84
+ class ResourceFields(StrEnum):
85
+ code = 'Code'
86
+ vis_code = 'VisCode'
87
+ series = 'Series'
88
+ number = 'Number'
89
+ code_bar = 'CodeBar'
90
+ name = 'Name'
91
+ foreign_name = 'ForeignName'
92
+ type = 'Type'
93
+ group = 'Group'
94
+ unit_of_measure = 'UnitOfMeasure'
95
+ issue_method = 'IssueMethod'
96
+ cost1 = 'Cost1'
97
+ cost2 = 'Cost2'
98
+ cost3 = 'Cost3'
99
+ cost4 = 'Cost4'
100
+ cost5 = 'Cost5'
101
+ cost6 = 'Cost6'
102
+ cost7 = 'Cost7'
103
+ cost8 = 'Cost8'
104
+ cost9 = 'Cost9'
105
+ cost10 = 'Cost10'
106
+ active = 'Active'
107
+ active_from = 'ActiveFrom'
108
+ active_to = 'ActiveTo'
109
+ inactive = 'Inactive'
110
+ inactive_from = 'InactiveFrom'
111
+ inactive_to = 'InactiveTo'
112
+ default_warehouse = 'DefaultWarehouse'
113
+ picture = 'Picture'
114
+ remarks = 'Remarks'
115
+ property1 = 'Property1'
116
+ property2 = 'Property2'
117
+ property3 = 'Property3'
118
+ property4 = 'Property4'
119
+ property5 = 'Property5'
120
+ property6 = 'Property6'
121
+ property7 = 'Property7'
122
+ property8 = 'Property8'
123
+ property9 = 'Property9'
124
+ property10 = 'Property10'
125
+ property11 = 'Property11'
126
+ property12 = 'Property12'
127
+ property13 = 'Property13'
128
+ property14 = 'Property14'
129
+ property15 = 'Property15'
130
+ property16 = 'Property16'
131
+ property17 = 'Property17'
132
+ property18 = 'Property18'
133
+ property19 = 'Property19'
134
+ property20 = 'Property20'
135
+ property21 = 'Property21'
136
+ property22 = 'Property22'
137
+ property23 = 'Property23'
138
+ property24 = 'Property24'
139
+ property25 = 'Property25'
140
+ property26 = 'Property26'
141
+ property27 = 'Property27'
142
+ property28 = 'Property28'
143
+ property29 = 'Property29'
144
+ property30 = 'Property30'
145
+ property31 = 'Property31'
146
+ property32 = 'Property32'
147
+ property33 = 'Property33'
148
+ property34 = 'Property34'
149
+ property35 = 'Property35'
150
+ property36 = 'Property36'
151
+ property37 = 'Property37'
152
+ property38 = 'Property38'
153
+ property39 = 'Property39'
154
+ property40 = 'Property40'
155
+ property41 = 'Property41'
156
+ property42 = 'Property42'
157
+ property43 = 'Property43'
158
+ property44 = 'Property44'
159
+ property45 = 'Property45'
160
+ property46 = 'Property46'
161
+ property47 = 'Property47'
162
+ property48 = 'Property48'
163
+ property49 = 'Property49'
164
+ property50 = 'Property50'
165
+ property51 = 'Property51'
166
+ property52 = 'Property52'
167
+ property53 = 'Property53'
168
+ property54 = 'Property54'
169
+ property55 = 'Property55'
170
+ property56 = 'Property56'
171
+ property57 = 'Property57'
172
+ property58 = 'Property58'
173
+ property59 = 'Property59'
174
+ property60 = 'Property60'
175
+ property61 = 'Property61'
176
+ property62 = 'Property62'
177
+ property63 = 'Property63'
178
+ property64 = 'Property64'
179
+ active_remarks = 'ActiveRemarks'
180
+ inactive_remarks = 'InactiveRemarks'
181
+ attachment_entry = 'AttachmentEntry'
182
+ units_per_time = 'UnitsPerTime'
183
+ time_per_units = 'TimePerUnits'
184
+ allocation = 'Allocation'
185
+ linked_item = 'LinkedItem'
186
+ relevant_for_single_run1 = 'RelevantForSingleRun1'
187
+ relevant_for_single_run2 = 'RelevantForSingleRun2'
188
+ relevant_for_single_run3 = 'RelevantForSingleRun3'
189
+ relevant_for_single_run4 = 'RelevantForSingleRun4'
190
+ resource_warehouses = 'ResourceWarehouses'
191
+ resource_fixed_assets = 'ResourceFixedAssets'
192
+ resource_employees = 'ResourceEmployees'
193
+ resource_daily_capacities = 'ResourceDailyCapacities'
194
+ items = 'Items'
195
+ resource_capacities = 'ResourceCapacities'
196
+ resource_group = 'ResourceGroup'
197
+ item = 'Item'
198
+
199
+ class ResourceCapacityFields(StrEnum):
200
+ id = 'Id'
201
+ code = 'Code'
202
+ warehouse = 'Warehouse'
203
+ date = 'Date'
204
+ type = 'Type'
205
+ capacity = 'Capacity'
206
+ source_type = 'SourceType'
207
+ source_entry = 'SourceEntry'
208
+ source_line_num = 'SourceLineNum'
209
+ base_type = 'BaseType'
210
+ base_entry = 'BaseEntry'
211
+ base_line_num = 'BaseLineNum'
212
+ action = 'Action'
213
+ owning_type = 'OwningType'
214
+ owning_entry = 'OwningEntry'
215
+ owning_line_num = 'OwningLineNum'
216
+ reverted_type = 'RevertedType'
217
+ reverted_entry = 'RevertedEntry'
218
+ reverted_line_num = 'RevertedLineNum'
219
+ memo_source = 'MemoSource'
220
+ memo = 'Memo'
221
+ single_run_capacity = 'SingleRunCapacity'
222
+ single_run_memo_source = 'SingleRunMemoSource'
223
+ single_run_memo = 'SingleRunMemo'
224
+ resource = 'Resource'
225
+ warehouse2 = 'Warehouse2'
226
+
227
+ class ResourceGroupFields(StrEnum):
228
+ code = 'Code'
229
+ name = 'Name'
230
+ type = 'Type'
231
+ cost_name1 = 'CostName1'
232
+ cost1 = 'Cost1'
233
+ cost_name2 = 'CostName2'
234
+ cost2 = 'Cost2'
235
+ cost_name3 = 'CostName3'
236
+ cost3 = 'Cost3'
237
+ cost_name4 = 'CostName4'
238
+ cost4 = 'Cost4'
239
+ cost_name5 = 'CostName5'
240
+ cost5 = 'Cost5'
241
+ cost_name6 = 'CostName6'
242
+ cost6 = 'Cost6'
243
+ cost_name7 = 'CostName7'
244
+ cost7 = 'Cost7'
245
+ cost_name8 = 'CostName8'
246
+ cost8 = 'Cost8'
247
+ cost_name9 = 'CostName9'
248
+ cost9 = 'Cost9'
249
+ cost_name10 = 'CostName10'
250
+ cost10 = 'Cost10'
251
+ num_of_units_text = 'NumOfUnitsText'
252
+ resources = 'Resources'
253
+
254
+ class ResourcePropertyFields(StrEnum):
255
+ code = 'Code'
256
+ name = 'Name'
@@ -0,0 +1,53 @@
1
+ from __future__ import annotations
2
+ from enum import StrEnum
3
+
4
+ class LandedCostFields(StrEnum):
5
+ doc_entry = 'DocEntry'
6
+ landed_cost_number = 'LandedCostNumber'
7
+ posting_date = 'PostingDate'
8
+ due_date = 'DueDate'
9
+ vendor_code = 'VendorCode'
10
+ vendor_name = 'VendorName'
11
+ broker = 'Broker'
12
+ broker_name = 'BrokerName'
13
+ closed_document = 'ClosedDocument'
14
+ file_number = 'FileNumber'
15
+ remarks = 'Remarks'
16
+ reference = 'Reference'
17
+ document_currency = 'DocumentCurrency'
18
+ document_rate = 'DocumentRate'
19
+ projected_customs = 'ProjectedCustoms'
20
+ actual_customs = 'ActualCustoms'
21
+ actual_customs_fc = 'ActualCustomsFC'
22
+ tax1 = 'Tax1'
23
+ tax2 = 'Tax2'
24
+ before_tax = 'BeforeTax'
25
+ total = 'Total'
26
+ total_freight_charges = 'TotalFreightCharges'
27
+ projected_customs_fc = 'ProjectedCustomsFC'
28
+ tax1_fc = 'Tax1FC'
29
+ tax2_fc = 'Tax2FC'
30
+ before_tax_fc = 'BeforeTaxFC'
31
+ total_fc = 'TotalFC'
32
+ total_freight_charges_fc = 'TotalFreightChargesFC'
33
+ series = 'Series'
34
+ customs_affects_inventory = 'CustomsAffectsInventory'
35
+ amount_to_balance = 'AmountToBalance'
36
+ amount_to_balance_fc = 'AmountToBalanceFC'
37
+ billof_lading_number = 'BillofLadingNumber'
38
+ transport_type = 'TransportType'
39
+ transaction_number = 'TransactionNumber'
40
+ journal_remarks = 'JournalRemarks'
41
+ attachment_entry = 'AttachmentEntry'
42
+ landed_cost_item_lines = 'LandedCost_ItemLines'
43
+ landed_cost_cost_lines = 'LandedCost_CostLines'
44
+ business_partner = 'BusinessPartner'
45
+ shipping_type = 'ShippingType'
46
+ journal_entry = 'JournalEntry'
47
+ purchase_delivery_notes = 'PurchaseDeliveryNotes'
48
+
49
+ class LandedCostsCodeFields(StrEnum):
50
+ code = 'Code'
51
+ name = 'Name'
52
+ allocation_by = 'AllocationBy'
53
+ landed_costs_allocation_account = 'LandedCostsAllocationAccount'
@@ -0,0 +1,244 @@
1
+ from __future__ import annotations
2
+ from enum import StrEnum
3
+
4
+ class BlanketAgreementFields(StrEnum):
5
+ agreement_no = 'AgreementNo'
6
+ bp_code = 'BPCode'
7
+ bp_name = 'BPName'
8
+ contact_person_code = 'ContactPersonCode'
9
+ start_date = 'StartDate'
10
+ end_date = 'EndDate'
11
+ terminate_date = 'TerminateDate'
12
+ description = 'Description'
13
+ agreement_type = 'AgreementType'
14
+ status = 'Status'
15
+ owner = 'Owner'
16
+ ignore_prices_in_agreement = 'IgnorePricesInAgreement'
17
+ renewal = 'Renewal'
18
+ remind_unit = 'RemindUnit'
19
+ remind_time = 'RemindTime'
20
+ remarks = 'Remarks'
21
+ attachment_entry = 'AttachmentEntry'
22
+ settlement_probability = 'SettlementProbability'
23
+ agreement_method = 'AgreementMethod'
24
+ payment_terms = 'PaymentTerms'
25
+ price_list = 'PriceList'
26
+ signing_date = 'SigningDate'
27
+ amendment_to = 'AmendmentTo'
28
+ series = 'Series'
29
+ doc_num = 'DocNum'
30
+ hand_written = 'HandWritten'
31
+ period_indicator = 'PeriodIndicator'
32
+ payment_method = 'PaymentMethod'
33
+ exchange_rate = 'ExchangeRate'
34
+ shipping_type = 'ShippingType'
35
+ num_at_card = 'NumAtCard'
36
+ project = 'Project'
37
+ price_mode = 'PriceMode'
38
+ bp_currency = 'BPCurrency'
39
+ bp_type = 'BPType'
40
+ sap_passport = 'SAPPassport'
41
+ blanket_agreements_items_lines = 'BlanketAgreements_ItemsLines'
42
+ vendor_payments = 'VendorPayments'
43
+ journal_entries = 'JournalEntries'
44
+ business_partner = 'BusinessPartner'
45
+ employee_info = 'EmployeeInfo'
46
+ attachments2 = 'Attachments2'
47
+ payment_terms_type = 'PaymentTermsType'
48
+ price_list2 = 'PriceList2'
49
+ wizard_payment_method = 'WizardPaymentMethod'
50
+ shipping_type2 = 'ShippingType2'
51
+ project2 = 'Project2'
52
+ currency = 'Currency'
53
+ payment_drafts = 'PaymentDrafts'
54
+ business_partners = 'BusinessPartners'
55
+ incoming_payments = 'IncomingPayments'
56
+
57
+ class ContractTemplateFields(StrEnum):
58
+ template_name = 'TemplateName'
59
+ template_is_deleted = 'TemplateIsDeleted'
60
+ template_is_renewal = 'TemplateIsRenewal'
61
+ remind_before_renewal = 'RemindBeforeRenewal'
62
+ remind_unit = 'RemindUnit'
63
+ duration_of_coverage = 'DurationOfCoverage'
64
+ response_value = 'ResponseValue'
65
+ resolution_unit = 'ResolutionUnit'
66
+ description = 'Description'
67
+ contract_type = 'ContractType'
68
+ monday_enabled = 'MondayEnabled'
69
+ tuesday_enabled = 'TuesdayEnabled'
70
+ wednesday_enabled = 'WednesdayEnabled'
71
+ thursday_enabled = 'ThursdayEnabled'
72
+ friday_enabled = 'FridayEnabled'
73
+ saturday_enabled = 'SaturdayEnabled'
74
+ sunday_enabled = 'SundayEnabled'
75
+ monday_start = 'MondayStart'
76
+ monday_end = 'MondayEnd'
77
+ tuesday_start = 'TuesdayStart'
78
+ tuesday_end = 'TuesdayEnd'
79
+ wednesday_start = 'WednesdayStart'
80
+ wednesday_end = 'WednesdayEnd'
81
+ thursday_start = 'ThursdayStart'
82
+ thursday_end = 'ThursdayEnd'
83
+ friday_start = 'FridayStart'
84
+ friday_end = 'FridayEnd'
85
+ saturday_start = 'SaturdayStart'
86
+ saturday_end = 'SaturdayEnd'
87
+ sunday_start = 'SundayStart'
88
+ sunday_end = 'SundayEnd'
89
+ include_parts = 'IncludeParts'
90
+ include_labor = 'IncludeLabor'
91
+ include_travel = 'IncludeTravel'
92
+ remarks = 'Remarks'
93
+ include_holidays = 'IncludeHolidays'
94
+ response_unit = 'ResponseUnit'
95
+ resolution_time = 'ResolutionTime'
96
+ attachment_entry = 'AttachmentEntry'
97
+ items = 'Items'
98
+ service_contracts = 'ServiceContracts'
99
+
100
+ class ServiceCallFields(StrEnum):
101
+ service_call_id = 'ServiceCallID'
102
+ subject = 'Subject'
103
+ customer_code = 'CustomerCode'
104
+ customer_name = 'CustomerName'
105
+ contact_code = 'ContactCode'
106
+ manufacturer_serial_num = 'ManufacturerSerialNum'
107
+ internal_serial_num = 'InternalSerialNum'
108
+ contract_id = 'ContractID'
109
+ contract_end_date = 'ContractEndDate'
110
+ resolution_date = 'ResolutionDate'
111
+ resolution_time = 'ResolutionTime'
112
+ origin = 'Origin'
113
+ item_code = 'ItemCode'
114
+ item_description = 'ItemDescription'
115
+ item_group_code = 'ItemGroupCode'
116
+ status = 'Status'
117
+ priority = 'Priority'
118
+ call_type = 'CallType'
119
+ problem_type = 'ProblemType'
120
+ assignee_code = 'AssigneeCode'
121
+ description = 'Description'
122
+ technician_code = 'TechnicianCode'
123
+ resolution = 'Resolution'
124
+ creation_date = 'CreationDate'
125
+ creation_time = 'CreationTime'
126
+ responder = 'Responder'
127
+ updated_time = 'UpdatedTime'
128
+ belongs_to_a_queue = 'BelongsToAQueue'
129
+ response_by_time = 'ResponseByTime'
130
+ response_by_date = 'ResponseByDate'
131
+ resolution_on_date = 'ResolutionOnDate'
132
+ response_on_time = 'ResponseOnTime'
133
+ response_on_date = 'ResponseOnDate'
134
+ closing_time = 'ClosingTime'
135
+ assigned_date = 'AssignedDate'
136
+ queue = 'Queue'
137
+ response_assignee = 'ResponseAssignee'
138
+ entitledfor_service = 'EntitledforService'
139
+ resolution_on_time = 'ResolutionOnTime'
140
+ assigned_time = 'AssignedTime'
141
+ closing_date = 'ClosingDate'
142
+ series = 'Series'
143
+ doc_num = 'DocNum'
144
+ hand_written = 'HandWritten'
145
+ period_indicator = 'PeriodIndicator'
146
+ start_date = 'StartDate'
147
+ start_time = 'StartTime'
148
+ end_due_date = 'EndDueDate'
149
+ end_time = 'EndTime'
150
+ duration = 'Duration'
151
+ duration_type = 'DurationType'
152
+ reminder = 'Reminder'
153
+ reminder_period = 'ReminderPeriod'
154
+ reminder_type = 'ReminderType'
155
+ location = 'Location'
156
+ address_name = 'AddressName'
157
+ address_type = 'AddressType'
158
+ street = 'Street'
159
+ city = 'City'
160
+ room = 'Room'
161
+ state = 'State'
162
+ country = 'Country'
163
+ display_in_calendar = 'DisplayInCalendar'
164
+ customer_ref_no = 'CustomerRefNo'
165
+ problem_sub_type = 'ProblemSubType'
166
+ attachment_entry = 'AttachmentEntry'
167
+ service_bp_type = 'ServiceBPType'
168
+ bp_contact_person = 'BPContactPerson'
169
+ bp_phone1 = 'BPPhone1'
170
+ bp_phone2 = 'BPPhone2'
171
+ bp_cellular = 'BPCellular'
172
+ bp_fax = 'BPFax'
173
+ b_pe_mail = 'BPeMail'
174
+ bp_project_code = 'BPProjectCode'
175
+ bp_territory = 'BPTerritory'
176
+ bp_ship_to_code = 'BPShipToCode'
177
+ bp_ship_to_address = 'BPShipToAddress'
178
+ bp_bill_to_code = 'BPBillToCode'
179
+ bp_bill_to_address = 'BPBillToAddress'
180
+ telephone = 'Telephone'
181
+ update_date = 'UpdateDate'
182
+ supplementary_code = 'SupplementaryCode'
183
+ service_call_activities = 'ServiceCallActivities'
184
+ service_call_inventory_expenses = 'ServiceCallInventoryExpenses'
185
+ service_call_solutions = 'ServiceCallSolutions'
186
+ service_call_schedulings = 'ServiceCallSchedulings'
187
+ service_call_bp_address_components = 'ServiceCallBPAddressComponents'
188
+ business_partner = 'BusinessPartner'
189
+ service_contract = 'ServiceContract'
190
+ service_call_origin = 'ServiceCallOrigin'
191
+ item = 'Item'
192
+ item_groups = 'ItemGroups'
193
+ service_call_status = 'ServiceCallStatus'
194
+ service_call_type = 'ServiceCallType'
195
+ service_call_problem_type = 'ServiceCallProblemType'
196
+ user = 'User'
197
+ employee_info = 'EmployeeInfo'
198
+ queue2 = 'Queue2'
199
+ activity_location = 'ActivityLocation'
200
+ country2 = 'Country2'
201
+ service_call_problem_sub_type = 'ServiceCallProblemSubType'
202
+ project = 'Project'
203
+
204
+ class ServiceCallOriginFields(StrEnum):
205
+ origin_id = 'OriginID'
206
+ name = 'Name'
207
+ description = 'Description'
208
+ active = 'Active'
209
+ service_calls = 'ServiceCalls'
210
+
211
+ class ServiceCallProblemSubTypeFields(StrEnum):
212
+ problem_sub_type_id = 'ProblemSubTypeID'
213
+ name = 'Name'
214
+ description = 'Description'
215
+ active = 'Active'
216
+ service_calls = 'ServiceCalls'
217
+
218
+ class ServiceCallProblemTypeFields(StrEnum):
219
+ problem_type_id = 'ProblemTypeID'
220
+ name = 'Name'
221
+ description = 'Description'
222
+ active = 'Active'
223
+ service_calls = 'ServiceCalls'
224
+
225
+ class ServiceCallSolutionStatusFields(StrEnum):
226
+ status_id = 'StatusId'
227
+ name = 'Name'
228
+ description = 'Description'
229
+ active = 'Active'
230
+ knowledge_base_solutions = 'KnowledgeBaseSolutions'
231
+
232
+ class ServiceCallStatusFields(StrEnum):
233
+ status_id = 'StatusId'
234
+ name = 'Name'
235
+ description = 'Description'
236
+ active = 'Active'
237
+ service_calls = 'ServiceCalls'
238
+
239
+ class ServiceCallTypeFields(StrEnum):
240
+ call_type_id = 'CallTypeID'
241
+ name = 'Name'
242
+ description = 'Description'
243
+ active = 'Active'
244
+ service_calls = 'ServiceCalls'
@@ -0,0 +1,119 @@
1
+ import json
2
+ import logging
3
+ import os
4
+ from datetime import datetime, timezone
5
+
6
+ from b1sl.b1sl.environment import B1Env
7
+
8
+
9
+ class B1JSONFormatter(logging.Formatter):
10
+ """
11
+ Custom JSON formatter for SAP B1 SDK logs.
12
+
13
+ AI Role: Highly recommended for automated log parsing (ELK, Datadog).
14
+ It structure key metadata into top-level JSON fields for efficient filtering.
15
+
16
+ The fields included are:
17
+ - timestamp (ISO 8601 with Z)
18
+ - level (LogLevel)
19
+ - logger (Logger name)
20
+ - message (Log text)
21
+ - req_id (Tracing ID)
22
+ - user (SAP B1 User)
23
+ - db (Company Database)
24
+ - session_id (SAP Session)
25
+ - http_method
26
+ - endpoint
27
+ - status_code
28
+ - sap_error
29
+ """
30
+
31
+ def format(self, record):
32
+ """
33
+ Formats a LogRecord into a JSON string.
34
+
35
+ Args:
36
+ record (logging.LogRecord): The log record to format.
37
+
38
+ Returns:
39
+ str: JSON string containing standard and extra fields.
40
+ """
41
+ log_record = {
42
+ "timestamp": datetime.now(timezone.utc).replace(tzinfo=None).isoformat() + "Z",
43
+ "level": record.levelname,
44
+ "logger": record.name,
45
+ "message": record.getMessage(),
46
+ }
47
+
48
+ # Extract structured fields from 'extra' if provided
49
+ for field in [
50
+ "req_id",
51
+ "user",
52
+ "db",
53
+ "session_id",
54
+ "sap_error",
55
+ "http_method",
56
+ "endpoint",
57
+ "status_code",
58
+ ]:
59
+ if hasattr(record, field):
60
+ log_record[field] = getattr(record, field)
61
+
62
+ # Include exception info if present
63
+ if record.exc_info:
64
+ log_record["exception"] = self.formatException(record.exc_info)
65
+
66
+ return json.dumps(log_record)
67
+
68
+
69
+ def setup_logging(
70
+ level: int = logging.INFO,
71
+ *,
72
+ env: B1Env | None = None,
73
+ ) -> logging.Logger:
74
+ """
75
+ Initialise the SAP B1 SDK logger with environment-aware formatting.
76
+
77
+ ⚠️ WARNING: FOR STANDALONE SCRIPTS ONLY ⚠️
78
+ This function configures handlers and formatters on the root "b1sl" logger.
79
+ If you are using this SDK inside a framework (FastAPI, Django, etc.) that
80
+ manages its own logging, DO NOT call this function. It will conflict with
81
+ your host application's handlers. The SDK adheres to standard Python library
82
+ logging and will naturally propagate to your app's root logger.
83
+
84
+ Log format by environment:
85
+ - ``B1Env.PROD``: Structured JSON via :class:`B1JSONFormatter`.
86
+ - ``B1Env.DEV`` / ``B1Env.TEST``: Human-readable text.
87
+
88
+ Args:
89
+ level (int, optional): Logging verbosity. Defaults to INFO.
90
+ env (B1Env, optional): Explicit environment override. When omitted,
91
+ reads ``B1SL_ENV`` (default: ``dev``).
92
+
93
+ Returns:
94
+ logging.Logger: The configured ``b1sl`` root logger.
95
+
96
+ Example::
97
+
98
+ env = B1Environment.load()
99
+ setup_logging(env=env.config.environment)
100
+ """
101
+ resolved_env = env or B1Env(os.getenv("B1SL_ENV", "dev").lower())
102
+
103
+ logger = logging.getLogger("b1sl")
104
+ logger.setLevel(level)
105
+
106
+ if logger.hasHandlers():
107
+ logger.handlers.clear()
108
+
109
+ handler = logging.StreamHandler()
110
+
111
+ if resolved_env == B1Env.PROD:
112
+ handler.setFormatter(B1JSONFormatter())
113
+ else:
114
+ # DEV / TEST: readable and concise
115
+ formatter = logging.Formatter("%(asctime)s | %(levelname)-8s | %(message)s")
116
+ handler.setFormatter(formatter)
117
+
118
+ logger.addHandler(handler)
119
+ return logger
@@ -0,0 +1,13 @@
1
+ """
2
+ b1sl.b1sl.models — public model re-exports.
3
+
4
+ from b1sl.b1sl.models import B1Model, PaginatedResult
5
+ """
6
+
7
+ from b1sl.b1sl.models.base import B1Model
8
+ from b1sl.b1sl.models.paginated_result import PaginatedResult
9
+
10
+ __all__ = [
11
+ "B1Model",
12
+ "PaginatedResult",
13
+ ]
File without changes
@@ -0,0 +1,5 @@
1
+ # AUTO-GENERATED — do not edit by hand.
2
+ from __future__ import annotations
3
+ from .enums import *
4
+ from .complex_types import *
5
+ from .entities import *