---
# System prepended metadata

title: Untitled

---

### An Vo | Anuska pair programming
#### 23Sep21

```
1. fake the omise response, list of charge_id (1, 2 charges)
    Omise::Request::CreateCharge.start_faking!(:success)
    => return the block of add_fake_response(:success) {
        [
        { charge_id: `chrg_123`}
        { charge_id: `chrg_1234`}
        ]
    }
2. fake the order_id which generated from Xfers ( payment_service)
    res = [
        { charge_id: `chrg_123`, order_id: `order_123`}
        { charge_id: `chrg_1234`, order_id: `order_1234`}
        ]
    allow(OmiseJob).to receive(:new).and_return(res)
3. U map those 2 item together
```



1. How to link a Omise list charge report with Order from payment service ?
Input
[
{ charge_id: "chrg_1", ...},
{ charge_id: "chrg_2", ...}
]

a. Hard way
=>
`PaymentInstructions` / OmisePaymentMethodData

=> 
`PaymentMethod`

=> .... Order

b. Easier way
- [x] Create new column `PaymentInstructions.order_identifier`

- in `cbmt/payments_api.rb#` - `post "payments"`
```
      payment_instruction = payment_instruction_klass.persist_payment(wrapped_response, accounts_service_provider: accounts_service_provider) # should return an instance of payment_instructions

      
      result = payment_instruction_klass.payment_service_klass.create_one_off_payment!(...
      ) 
      order_id = result[:order_id] # Psedocode - result should contain order_id information
      payment_instruction.update!(order_identifir: order_id)
```


```
def find_order(charge_id)
pi = PaymentInstruction.find_by payment_identifier: charge_id
pi.order_identifier 

```



=> Output 
[
{order_1},
{order_2}
]













### Archived
### Omise settlement report brainstorm
1. Omise List charges
[{
	charge_id1,
	amt1
},
{
	charge_id2,
	amt2
}
]


2. Periodically fetch 1) from Omise:
Report (Format ?) - No need to define new active record, can be a data collection in applciation code 
\_ Row1 (Format ?) => ExternalLedger
\_ Row2


3. Reference to TIm's PR to define the format of Report / Row

4. How to create SettlementReport 
```
# Dump class to serialize Omise list charge response to rows (???)
class SettlementReport 

    def initialize(response)
     @response = response
    end
    
    def rows
        @response.map do |res|
        {
        id: res[:xxx],
        amount: res[:amountyyy],
        }
        end
    end

end

```


5. How to transfrom a list_charge to SettlementReport

a) Schedule a job to periodically fetch list_charge response from Omise (assume 10 minutes) `OmiseSettlementJob`
b) with OmiseSettlementJob:
    ```
    fetched_response = Omise::Client.list_charge(from:, to:)
    report = SettlementReport.new(fetched_response) # Teach SEttlementReport to recognize the response
    report.rows # => Can fetch enough data
    PaymentService.settle_payment!(report)
    ```
    
    
    
Concerns:
1. How to format report class ?
2. HOw to serialize `report.rows` ?