本文整理汇总了Python中casexml.apps.stock.models.StockTransaction.domain方法的典型用法代码示例。如果您正苦于以下问题:Python StockTransaction.domain方法的具体用法?Python StockTransaction.domain怎么用?Python StockTransaction.domain使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类casexml.apps.stock.models.StockTransaction
的用法示例。
在下文中一共展示了StockTransaction.domain方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_models
# 需要导入模块: from casexml.apps.stock.models import StockTransaction [as 别名]
# 或者: from casexml.apps.stock.models.StockTransaction import domain [as 别名]
def create_models(self, domain=None):
# todo: this function should probably move to somewhere in casexml.apps.stock
if self.tag not in stockconst.VALID_REPORT_TYPES:
return
report = DbStockReport.objects.create(
form_id=self.form_id,
date=self.timestamp,
type=self.tag,
domain=self._form.domain,
)
for txn in self.transactions:
db_txn = DbStockTransaction(
report=report,
case_id=txn.case_id,
section_id=txn.section_id,
product_id=txn.product_id,
)
if domain:
# set this as a shortcut for post save signal receivers
db_txn.domain = domain
db_txn.type = txn.action
db_txn.subtype = txn.subaction
if self.tag == stockconst.REPORT_TYPE_BALANCE:
db_txn.stock_on_hand = txn.quantity
db_txn.quantity = 0
else:
assert self.tag == stockconst.REPORT_TYPE_TRANSFER
previous_transaction = db_txn.get_previous_transaction()
db_txn.quantity = txn.relative_quantity
db_txn.stock_on_hand = (previous_transaction.stock_on_hand if previous_transaction else 0) + db_txn.quantity
db_txn.save()
示例2: _get_model_for_stock_transaction
# 需要导入模块: from casexml.apps.stock.models import StockTransaction [as 别名]
# 或者: from casexml.apps.stock.models.StockTransaction import domain [as 别名]
def _get_model_for_stock_transaction(report, transaction_helper, ledger_db):
assert report.type in const.VALID_REPORT_TYPES
txn = StockTransaction(
report=report,
case_id=transaction_helper.case_id,
section_id=transaction_helper.section_id,
product_id=transaction_helper.product_id,
type=transaction_helper.action,
subtype=transaction_helper.subaction,
)
def lazy_original_balance():
return ledger_db.get_current_balance(_stock_transaction_to_unique_ledger_reference(txn))
new_ledger_values = compute_ledger_values(
lazy_original_balance, report.type,
transaction_helper.relative_quantity)
txn.stock_on_hand = new_ledger_values.balance
txn.quantity = new_ledger_values.delta
if report.domain:
# set this as a shortcut for post save signal receivers
txn.domain = report.domain
# update the ledger DB in case later transactions reference the same ledger item
ledger_db.set_current_balance(_stock_transaction_to_unique_ledger_reference(txn), txn.stock_on_hand)
return txn
示例3: _create_model_for_stock_transaction
# 需要导入模块: from casexml.apps.stock.models import StockTransaction [as 别名]
# 或者: from casexml.apps.stock.models.StockTransaction import domain [as 别名]
def _create_model_for_stock_transaction(report, transaction_helper):
assert report.type in stockconst.VALID_REPORT_TYPES
txn = StockTransaction(
report=report,
case_id=transaction_helper.case_id,
section_id=transaction_helper.section_id,
product_id=transaction_helper.product_id,
type=transaction_helper.action,
subtype=transaction_helper.subaction,
)
def lazy_original_balance():
previous_transaction = txn.get_previous_transaction()
if previous_transaction:
return previous_transaction.stock_on_hand
else:
return None
new_ledger_values = compute_ledger_values(
lazy_original_balance, report.type,
transaction_helper.relative_quantity)
txn.stock_on_hand = new_ledger_values.balance
txn.quantity = new_ledger_values.delta
if report.domain:
# set this as a shortcut for post save signal receivers
txn.domain = report.domain
txn.save()
return txn
示例4: create_models_for_stock_report
# 需要导入模块: from casexml.apps.stock.models import StockTransaction [as 别名]
# 或者: from casexml.apps.stock.models.StockTransaction import domain [as 别名]
def create_models_for_stock_report(domain, stock_report_helper):
"""
Save stock report and stock transaction models to the database.
"""
assert stock_report_helper._form.domain == domain
domain = domain
if stock_report_helper.tag not in stockconst.VALID_REPORT_TYPES:
return
report = StockReport.objects.create(
form_id=stock_report_helper.form_id,
date=stock_report_helper.timestamp,
type=stock_report_helper.tag,
domain=domain,
)
for txn in stock_report_helper.transactions:
db_txn = StockTransaction(
report=report,
case_id=txn.case_id,
section_id=txn.section_id,
product_id=txn.product_id,
)
if domain:
# set this as a shortcut for post save signal receivers
db_txn.domain = domain
db_txn.type = txn.action
db_txn.subtype = txn.subaction
if stock_report_helper.tag == stockconst.REPORT_TYPE_BALANCE:
db_txn.stock_on_hand = txn.quantity
db_txn.quantity = 0
else:
assert stock_report_helper.tag == stockconst.REPORT_TYPE_TRANSFER
previous_transaction = db_txn.get_previous_transaction()
db_txn.quantity = txn.relative_quantity
db_txn.stock_on_hand = db_txn.quantity + (
previous_transaction.stock_on_hand
if previous_transaction else 0
)
db_txn.save()