- In order to test the auction module in the OpenERP I start the process by creating a product. - !record {model: product.product, id: product_product_furniture0}: categ_id: product.cat1 cost_method: standard mes_type: fixed name: Furniture procure_method: make_to_stock standard_price: 1.0 supply_method: buy type: product uom_id: product.product_uom_unit uom_po_id: product.product_uom_unit volume: 0.0 warranty: 0.0 weight: 0.0 weight_net: 0.0 - I create a new artist for an object. - !record {model: auction.artists, id: auction_artists_vincentvangogh0}: birth_death_dates: 1853-1900 name: Vincent van Gogh - I am modifying an expenses journal record for analytic journal. - !record {model: account.journal, id: account.expenses_journal}: analytic_journal_id: account.exp - I am modifying a sales journal record for analytic journal. - !record {model: account.journal, id: account.sales_journal}: analytic_journal_id: account.cose_journal_sale - I'm creating new Seller "Mr. Pinakin" with him email "info@mycustomer.com". - !record {model: res.partner, id: res_partner_mrpinakin0}: address: - city: Namur country_id: base.be phone: (+32).10.45.18.77 street: 23, street ways type: default zip: '2324324' email: 'info@mycustomer.com' name: Mr. Pinakin - I'm creating new Buyer "Mr. Patel" with his email "info@myinfobid.com". - !record {model: res.partner, id: res_partner_mrpatel0}: address: - city: Bruxelles country_id: base.be street: Rue des Palais 51, bte 33 type: default zip: '1000' email: 'info@myinfobid.com' name: Mr. Patel - I'm creating new Buyer "Mr. Johnson" with his email "info@mrkjohnson.com". - !record {model: res.partner, id: res_partner_mrkjohnson0}: address: - city: paris country_id: base.fr name: Mark Johnson street: 1 rue Rockfeller type: invoice zip: '75016' email: 'info@mrkjohnson.com' name: Mr. Mark Johnson - I'm creating new Buyer "Mr. Rahi" with his email "info@poalrahi.com". - !record {model: res.partner, id: res_partner_poalrahi0}: address: - city: Bruxelles country_id: base.be street: Rue des Palais 51, bte 33 type: default zip: '1000' email: 'info@poalrahi.com' name: Mr. Rahi - I create an Account tax with 0.03 amount to give Buyer "3%" Commission. - !record {model: account.tax, id: account_tax_buyer0}: amount: 0.029999999999999999 applicable_type: 'true' company_id: base.main_company domain: auction name: Buyer Costs(%3) sequence: 1 type: percent type_tax_use: all - I create another Account tax with 0.04 amount to give seller "4%" commission. - !record {model: account.tax, id: account_tax_sellercosts0}: amount: 0.040000000000000001 applicable_type: 'true' company_id: base.main_company domain: auction name: Seller Costs(%4) sequence: 1 type: percent type_tax_use: all - Now I want to associate an object with the auction so for that I create an auction "Antique furniture exhibition" which start from 1 Aug to 31 Aug with Seller Commission 4%, buyer commission 3%. - !record {model: auction.dates, id: auction_dates_antiquefurnitureexhibition0}: acc_expense: account.a_pay acc_income: account.a_recv account_analytic_id: account.analytic_root auction1: !eval "'%s-08-01' %(datetime.now().year)" auction2: !eval "'%s-08-31' %(datetime.now().year)" expo1: !eval "'%s-08-01' %(datetime.now().year)" expo2: !eval "'%s-08-31' %(datetime.now().year)" journal_id: account.expenses_journal journal_seller_id: account.sales_journal name: Antique furniture exhibition seller_costs: - auction.account_tax_sellercosts0 buyer_costs: - auction.account_tax_buyer0 - An object is being deposited for an auction,I create a seller's deposit record with deposit cost. - !record {model: auction.deposit, id: auction_deposit_ad0}: date_dep: !eval "'%s-08-01' %(datetime.now().year)" method: keep name: AD/006 partner_id: res_partner_mrpinakin0 specific_cost_ids: - account: auction.auction_expense amount: 200.0 name: Transfer Cost - I create a new object wooden-chair which is to be auctioned. - !record {model: auction.lots, id: auction_lots_woodenchair0}: ach_uid: res_partner_mrkjohnson0 artist_id: auction_artists_vincentvangogh0 auction_id: auction_dates_antiquefurnitureexhibition0 bord_vnd_id: auction_deposit_ad0 lot_est1: 3000.0 lot_est2: 5000.0 lot_num: 1 name: wooden-chair name2: antique wooden chair obj_num: 1 obj_price: 4000.0 obj_ret: 0.0 product_id: 'product_product_furniture0' state: draft vnd_lim: 5000.0 - I create a bid for an object "wooden-chair" which is to be auctioned in Antique furniture exhibition bid by Mr.Patel. - !record {model: auction.bid, id: auction_bid_bid0}: auction_id: auction_dates_antiquefurnitureexhibition0 contact_tel: (+32)2 211 34 83 name: bid/001 partner_id: res_partner_mrpatel0 - I create a bid line. - !record {model: auction.bid_line, id: auction_bid_line_0}: auction: Antique furniture exhibition bid_id: auction_bid_bid0 lot_id: auction.auction_lots_woodenchair0 price: 3100.0 - I create another bid for an object "wooden-chair" bid by a Mr.poalrahi - !record {model: auction.bid, id: auction_bid_bid1}: auction_id: auction_dates_antiquefurnitureexhibition0 name: bid/002 partner_id: res_partner_poalrahi0 - I create a bid line. - !record {model: auction.bid_line, id: auction_bid_line_1}: auction: Antique furniture exhibition bid_id: 'auction_bid_bid1' call: 1 lot_id: auction.auction_lots_woodenchair0 price: 3200.0 - I create another bid for an object "wooden-chair" bid by a Mr.Johnson - !record {model: auction.bid, id: auction_bid_bid2}: auction_id: auction_dates_antiquefurnitureexhibition0 name: bid/003 partner_id: res_partner_mrkjohnson0 - I create a bid line. - !record {model: auction.bid_line, id: auction_bid_line_2}: auction: Antique furniture exhibition bid_id: 'auction_bid_bid2' call: 1 lot_id: auction.auction_lots_woodenchair0 price: 4000.0 - Mr. MarkJohnson bid are selected as the Finalist Bid with 4000 Euro - I check that buyer price and seller price gets bound with the value - !python {model: auction.lots}: | from tools.translate import _ auc_id=self.browse(cr, uid, ref("auction_lots_woodenchair0")) assert auc_id.buyer_price and auc_id.seller_price, _('Buyer price and seller price are not available!') - Now, An object has been sold,so I click on the "Sold" button. - !python {model: auction.lots}: | self.button_bought(cr, uid, [ref("auction_lots_woodenchair0")], {"lang": "en_US", "tz": False, "active_model": "ir.ui.menu", "active_ids": [ref("auction.auction_lots_woodenchair0")], "active_id": ref("auction.auction_lots_woodenchair0")}) - I click on the "Create all invoices" button for all Objects in this Auction. - !python {model: auction.dates}: | self.close(cr, uid, [ref("auction.auction_dates_antiquefurnitureexhibition0")], {"active_model": "ir.ui.menu", "active_ids": [ref("auction.menu_auction_dates_next1")], "active_id": ref("auction.menu_auction_dates_next1")}) - I check that a record gets created in the "Supplier Invoices". - !python {model: auction.lots}: | from tools.translate import _ auc_id=self.browse(cr, uid, ref("auction_lots_woodenchair0")) assert(auc_id.sel_inv_id), _('Seller Invoice has not been created!') - I create a buyer's invoice by using the "Invoice Buyer objects" wizard. - !record {model: auction.lots.make.invoice.buyer, id: auction_lots_make_invoice_buyer_0}: amount: 3090.0 buyer_id: res_partner_mrkjohnson0 number: !eval "'%s/003' %(datetime.now().year)" objects: 1 - I click on the "Create Invoices" button. - !python {model: auction.lots.make.invoice.buyer}: | self.makeInvoices(cr, uid, [ref("auction_lots_make_invoice_buyer_0")], {"active_model": "auction.lots", "active_ids": [ref("auction_lots_woodenchair0")], "active_id": ref("auction_lots_woodenchair0"), }) - I check that a "Buyer Invoice" field gets bound with the value. - !python {model: auction.lots}: | from tools.translate import _ auc_id=self.browse(cr, uid, ref("auction_lots_woodenchair0")) assert(auc_id.ach_inv_id), _('Buyer Invoice has not been created!') - Buyer pays the invoice - !python {model: account.invoice}: | obj_lots = self.pool.get('auction.lots') lots_id = obj_lots.browse(cr, uid, ref("auction_lots_woodenchair0")) self.pay_and_reconcile(cr, uid, [lots_id.ach_inv_id.id], 4120.0, ref('account.cash'), ref('account.period_8'), ref('account.cash_journal'), ref('account.cash'), ref('account.period_8'), ref('account.cash_journal'), name='Furniture') - I check that "Buyer Invoice Reconciled" field is marked. - !assert {model: auction.lots, id: auction_lots_woodenchair0}: - paid_ach == True, 'Buyer Invoice should be Reconciled.' - I check that the order which was initially in the draft state has transit to sold state. - !python {model: auction.lots}: | from tools.translate import _ auc_id=self.browse(cr, uid, ref("auction_lots_woodenchair0")) assert(auc_id.state == 'sold'), _('State not changed!') - I click on the Taken Away button. - !python {model: auction.lots}: | self.button_taken_away(cr, uid, [ref("auction_lots_woodenchair0")], {"lang": "en_US", "tz": False, "active_model": "ir.ui.menu", "active_ids": [ref("auction.auction_all_objects_menu")], "active_id": ref("auction.auction_all_objects_menu")}) - I check that the order which was initially in the sold state has transit to taken away state. - !assert {model: auction.lots, id: auction_lots_woodenchair0}: - state == 'taken_away', "state is not taken Away" - In order to change the auction for an object I use the "Change auction date" wizard. This will Erase The Object Adjudication Price and Its Buyer! - !record {model: auction.lots.auction.move, id: auction_lots_auction_move_0}: auction_id: auction.auction_date_2 - I click on the "Move to Auction date" button. - !python {model: auction.lots.auction.move}: | self.auction_move_set(cr, uid, [ref("auction_lots_auction_move_0")], {"lang": "en_US", "tz": False, "active_model": "auction.lots", "active_ids": [ref("auction_lots_woodenchair0")], "active_id": ref("auction_lots_woodenchair0"), }) - I check that a record gets created in the lot history. - !python {model: auction.lots}: | from tools.translate import _ auc_id=self.browse(cr, uid, ref("auction_lots_woodenchair0")) auc_lot_his=self.pool.get('auction.lot.history') ids=auc_lot_his.search(cr, uid, [('lot_id', '=', auc_id.id)]) assert ids, _('Auction history does not exists!')