OpenERP 질문 중 하나
1691 단어 open
def _get_send_amount(self,cr,uid,ids,name,args,context=None):
res={}
MRP={}
lines = self.browse(cr,uid,ids)
#odd code:here the code will execute towice,first time execute by line id asc
#but second time it will execute by line id desc
#so,I have to sort it before the loop.
lines.sort(key=lambda x:x.id)
for line in lines:
result=self._get_send_data(cr,uid,line.id,name,args,context=context)
if result["amount"] > line.amount:
if not MRP.has_key(line.product_id.id):
MRP[line.product_id.id]=result["amount"]-line.amount
res[line.id]=line.amount
elif MRP[line.product_id.id]-line.amount>0:
res[line.id]=line.amount
MRP[line.product_id.id] -=line.amount
else:
res[line.id]=MRP[line.product_id.id]
MRP[line.product_id.id]=0
else:
res[line.id]=result["amount"]
for line2 in lines:
#
mrp = self.pool.get('mrp.bom').search(cr,uid,[('product_id','=',line2.product_id.id),('bom_id','=',False)],context=context)
if len(mrp)>0:
min_count = 0
bom = self.pool.get('mrp.bom').browse(cr,uid,mrp[0],context=context)
res_count=[]
#res_orders=[]
i=1
for bom_line in bom.bom_lines:
res_count.append(int(res[line2.id+i] / bom_line.product_qty))
i+=1
if len(res_count)>0:
amount =min(res_count)
else:
amount =0
res[line2.id]=amount
return res
나는 반복 순환에서 사용자 정의 방법을 발견했다.get_send_amount는 두 번 실행되며 첫 번째 실행 순서는 정순이고 두 번째 실행 순서는 역순이다.
왜 그런지 모르겠다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenBB 터미널로 오픈 소스 동향을 모니터링하는 방법!우리는 오픈 소스 프로젝트에 대해 약간 편파적일 가능성이 있습니다. 나머지 세계는 Elon Musk가 알고리즘을 공개하는 것에 대해 트와트를 해왔기 때문에 OSS가 무엇인지 배우는 것일 수 있습니다. 우리 모두는 그...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.