def save_trade_commission_data(cursor): print cursor for row in cursor: file_id = row[0] contract_id = row[1] buyer = BpBasic.get_business_with_database_id(database_id=row[2]) seller = BpBasic.get_business_with_database_id(database_id=row[3]) product = ProductItem.get_product_with_database_id(database_id=row[4]) price = float(row[5]) quantity = float(row[6]) packing = Packaging.objects.get(name=row[7]) ship_start = row[8] ship_end = row[9] other_info = row[10] seller_broker = None if not row[ 11] else BpBasic.get_business_with_database_id(database_id=row[11]) buyer_broker = None if not row[ 12] else BpBasic.get_business_with_database_id(database_id=row[12]) commission_type = CommissionType.objects.get(name=row[13]) commission = float(row[14]) buyer_broker_commission_type = CommissionType.objects.get(name=row[15]) buyer_broker_commission = 0.00 if not row[16] else float(row[16]) difference = float(row[17]) discount = float(row[18]) date = row[19] if row[20]: contractual_buyer = BpBasic.get_business_with_database_id( database_id=row[20]) else: contractual_buyer = buyer if not Transaction.objects.filter(file_id=file_id).exists(): new_trade = Transaction() new_trade.date = date new_trade.buyer = buyer new_trade.seller = seller new_trade.contractual_buyer = contractual_buyer new_trade.product_item = product new_trade.quantity = quantity new_trade.price = price new_trade.packaging = packing new_trade.shipment_start = ship_start new_trade.shipment_end = ship_end new_trade.file_id = file_id new_trade.contract_id = contract_id new_trade.other_info = other_info new_trade.created_by = created_by new_trade.save() new_commission = TrCommission() new_commission.seller_broker = seller_broker new_commission.transaction = new_trade new_commission.buyer_broker = buyer_broker new_commission.buyer_broker_comm_type = buyer_broker_commission_type new_commission.buyer_broker_comm = buyer_broker_commission new_commission.commission_type = commission_type new_commission.commission = commission new_commission.difference = difference new_commission.discount = discount new_commission.save() print 'File Created' else: print 'File Already Exist in the System'
def save_transaction(self, data, user): try: tran_id = data.get('id') product_specs = data.get('productSpecification') commission_data = data.get('commission') basic = data.get('basic') buyer_id = basic.get('buyerId') contractual_buyer_id = basic.get('contractualBuyerId') seller_id = basic.get('sellerId') packaging_id = basic.get('packagingId') product_item_id = basic.get('productItemId') transaction_date = dateutil.parser.parse( str(basic.get('date')).replace('"', '')) transaction_date = transaction_date.replace(hour=0, minute=0, second=0, microsecond=0) shipment_start = dateutil.parser.parse( str(basic.get('shipmentStart')).replace('"', '')) shipment_start = shipment_start.replace(hour=0, minute=0, second=0, microsecond=0) shipment_end = dateutil.parser.parse( str(basic.get('shipmentEnd')).replace('"', '')) shipment_end = shipment_end.replace(hour=0, minute=0, second=0, microsecond=0) packaging = Packaging.objects.get(id=packaging_id) commission_type_id = commission_data.get('typeId') seller_broker_id = commission_data.get('sellerBrokerId') buyer_broker_id = commission_data.get('buyerBrokerId') buyer_broker_commission_type_id = commission_data.get( 'buyerBrokerCommissionTypeId') if buyer_id == seller_id: return Response({ 'success': False, 'message': 'Buyer and Seller can not be same' }) buyer = BpBasic.objects.get(bp_id=buyer_id) seller = BpBasic.objects.get(bp_id=seller_id) product_item = ProductItem.objects.get(id=product_item_id) contractual_buyer = BpBasic.objects.get(bp_id=contractual_buyer_id) commission_type = CommissionType.objects.get(id=commission_type_id) buyer_broker_commission_type = None if not buyer_broker_id else CommissionType.objects.get( id=buyer_broker_commission_type_id) seller_broker = None if not seller_broker_id else BpBasic.objects.get( bp_id=seller_broker_id) buyer_broker = None if not buyer_broker_id else BpBasic.objects.get( bp_id=buyer_broker_id) #update if tran_id: success_message = self.messages['successPUT'] transaction = Transaction.objects.get(tr_id=tran_id) commission = TrCommission.objects.get( transaction__tr_id=tran_id) transaction.updated_by = user transaction.updated_at = dt.now() #add else: success_message = self.messages['successPOST'] transaction = Transaction() commission = TrCommission() transaction.created_by = user # saving all transaction details transaction.seller = seller transaction.buyer = buyer transaction.product_item = product_item transaction.contractual_buyer = contractual_buyer transaction.other_info = basic.get('otherInfo') transaction.file_id = basic.get('fileId') transaction.contract_id = basic.get('contractId') transaction.product_specification = product_specs transaction.shipment_start = shipment_start.date() transaction.shipment_end = shipment_end.date() transaction.price = float(basic.get('price')) transaction.quantity = float(basic.get('quantity')) transaction.quantity_fcl = float(basic.get('quantityFcl')) transaction.date = transaction_date.date() transaction.packaging = packaging # saving all commission details commission.discount = float(commission_data.get('discount')) commission.difference = float(commission_data.get('difference')) commission.commission = float(commission_data.get('commission')) commission.commission_type = commission_type commission.seller_broker = seller_broker commission.buyer_broker = buyer_broker commission.buyer_broker_comm_type = buyer_broker_commission_type commission.buyer_broker_comm = float( commission_data.get('buyerBrokerCommission', 0.00)) transaction.save() commission.transaction = transaction commission.save() # Assigning not shipped status to new transaction if not tran_id: shipment = TrShipment() shipment.transaction = transaction shipment.not_shipped = True shipment.created_by = user shipment.save() primary_transaction_id = basic.get('primaryTransaction') primary_shipment_id = basic.get('primaryShipment') if primary_transaction_id: primary_transaction = Transaction.objects.get( file_id=primary_transaction_id) if hasattr(transaction, 'secondary_trade'): secondary_trade = transaction.secondary_trade else: secondary_trade = SecondaryTrades() secondary_trade.transaction = transaction secondary_trade.primary_trade = primary_transaction secondary_trade.save() else: if hasattr(transaction, 'secondary_trade'): transaction.secondary_trade.delete() if primary_shipment_id: primary_shipment = Transaction.objects.get( file_id=primary_shipment_id) if hasattr(transaction, 'partial_shipment'): partial_shipment = transaction.partial_shipment else: partial_shipment = PartialShipments() partial_shipment.transaction = transaction partial_shipment.primary_shipment = primary_shipment partial_shipment.save() else: if hasattr(transaction, 'partial_shipment'): transaction.primary_trade.all().delete() # Making Transaction Change Log if tran_id: #TODO: Have to make detail log message log = '<span class="titled">Updated Transaction</span>' TransactionChangeLog.add_change_log(user, log, transaction) else: log = '<span class="titled">Created Transaction</span>' TransactionChangeLog.add_change_log(user, log, transaction) return Response( { 'fileId': transaction.file_id, 'success': True, 'message': success_message % transaction.file_id }, status=status.HTTP_200_OK) except Exception, e: return Response({'success': False, 'message': str(e)})