/**
  * @param BeneficiaryAdapterInterface
  * @param String The key to read the config from
  */
 public static function createCOSDetailsRecordLine(BeneficiaryAdapterInterface $beneficiary, $config_key)
 {
     $line = new Line($config_key);
     $columns = ['record_type' => PresetStringColumnFactory::create('COS', $label = 'record_type'), 'batch_instruction_indicator' => PresetStringColumnFactory::create('I', $label = 'batch_instruction_indicator'), 'payment_type' => PresetStringColumnFactory::create('ICO', $label = 'payment_type'), 'debit_acc_country' => ConfigurableStringColumnFactory::create($config = $line->config, 'debit_acc_country', $label = 'debit_acc_country'), 'debit_acc_institution' => ConfigurableStringColumnFactory::create($config = $line->config, 'debit_acc_institution', $label = 'debit_acc_institution'), 'debit_acc_number' => ConfigurableStringColumnFactory::create($config = $line->config, 'debit_acc_number', $label = 'debit_acc_number'), 'debit_acc_product_type' => EmptyColumnFactory::create($label = 'debit_acc_product_type'), 'debit_currency' => ConfigurableStringColumnFactory::create($config = $line->config, 'debit_currency', $label = 'debit_currency'), 'instruction_currency' => ConfigurableStringColumnFactory::create($config = $line->config, 'instruction_currency', $label = 'instruction_currency'), 'instrument_amount' => VariableLengthStringColumnFactory::create($beneficiary->getPaymentAmount(), $max_length = 20, $label = 'instrument_amount'), 'instrument_amount_debit_currency' => EmptyColumnFactory::create($label = 'instrument_amount_debit_currency'), 'instrument_date' => EmptyColumnFactory::create($label = 'instrument_date'), 'clearing_bank_country' => ConfigurableStringColumnFactory::create($config = $line->config, 'clearing_bank_country', $label = 'clearing_bank_country'), 'customer_reference' => VariableLengthStringColumnFactory::create($beneficiary->getPaymentId(), $max_length = 35, $label = 'customer_reference'), 'layout_template_id' => ConfigurableStringColumnFactory::create($config = $line->config, 'layout_template_id', $label = 'layout_template_id'), 'bene_id' => EmptyColumnFactory::create($label = 'bene_id'), 'payment_details' => EmptyColumnFactory::create($label = 'payment_details', $label = 'payment_details'), 'remarks_1' => EmptyColumnFactory::create($label = 'remarks_1', $label = 'remarks_1'), 'remarks_2' => EmptyColumnFactory::create($label = 'remarks_2', $label = 'remarks_2'), 'deduction_charge_flag' => PresetStringColumnFactory::create('C', $label = 'deduction_charge_flag'), 'show_order_customer_flag' => PresetStringColumnFactory::create('Y', $label = 'show_order_customer_flag'), 'override duplication_flag' => PresetStringColumnFactory::create('N', $label = 'override duplication_flag'), 'number_of_recipients' => PresetStringColumnFactory::create('1', $label = 'number_of_recipients'), 'first_contract_number' => EmptyColumnFactory::create($label = 'first_contract_number'), 'first_contract_takeup_amount' => EmptyColumnFactory::create($label = 'first_contract_takeup_amount'), 'second_contract_number' => EmptyColumnFactory::create($label = 'second_contract_number'), 'second_contract_takeup_amount' => EmptyColumnFactory::create($label = 'second_contract_takeup_amount'), 'key_in_rate' => EmptyColumnFactory::create($label = 'key_in_rate'), 'dealer_reference' => EmptyColumnFactory::create($label = 'dealer_reference'), 'exchange_control' => EmptyColumnFactory::create($label = 'exchange_control'), 'drawee_bank_country' => EmptyColumnFactory::create($label = 'drawee_bank_country'), 'drawee_bank_branch' => EmptyColumnFactory::create($label = 'drawee_bank_branch'), 'dd_purpose_of_payment_1' => EmptyColumnFactory::create($label = 'dd_purpose_of_payment_1'), 'dd_purpose_of_payment_2' => EmptyColumnFactory::create($label = 'dd_purpose_of_payment_2'), 'signature_id_1' => EmptyColumnFactory::create($label = 'signature_id_1'), 'signature_id_2' => EmptyColumnFactory::create($label = 'signature_id_2'), 'signature_id_3' => EmptyColumnFactory::create($label = 'signature_id_3'), 'template_id' => EmptyColumnFactory::create($label = 'template_id'), 'template_record_type' => EmptyColumnFactory::create($label = 'template_record_type'), 'template_description' => EmptyColumnFactory::create($label = 'template_description'), 'payment_code' => EmptyColumnFactory::create($label = 'payment_code'), 'payment_info_1' => EmptyColumnFactory::create($label = 'payment_info_1'), 'payment_info_2' => EmptyColumnFactory::create($label = 'payment_info_2'), 'payment_info_3' => EmptyColumnFactory::create($label = 'payment_info_3'), 'drawing_location' => ConfigurableStringColumnFactory::create($config = $line->config, 'drawing_location', $label = 'drawing_location')];
     $line->setColumns($columns);
     return $line;
 }
 /**
  * @param BeneficiaryAdapterInterface
  * @param String The key to read the config from
  */
 public static function cashiersOrderFormatPaymentInstructionLine(BeneficiaryAdapterInterface $beneficiary, $config_key)
 {
     $line = new Line($config_key);
     $line->setColumnDelimiter("");
     $date_column = new DateColumn();
     $date_column->setDate(static::getNextWorkingDay());
     $date_column->setFormat('Ymd');
     $settlement_ac_no = ConfigurableStringColumnFactory::create($config = $line->config, 'settlement_ac_no')->getString();
     $columns = ['record_type' => PresetStringColumnFactory::create('2', $label = 'record_type'), 'payment_type' => PresetStringColumnFactory::create('CHQ', $label = 'payment_type'), 'payment_currency' => ConfigurableStringColumnFactory::create($config = $line->config, 'payment_currency', $label = 'payment_currency'), 'payment_amt' => LeftPaddedDecimalWithoutDelimiterColumnFactory::create($beneficiary->getPaymentAmount(), $fixed_length = 15, $label = 'payment_amt'), 'value_date' => RightPaddedStringColumnFactory::create($date_column->getString(), 8, $label = 'value_date'), 'beneficiary_name1' => RightPaddedStringColumnFactory::create($beneficiary->getName1(), $max_length = 35, $label = 'beneficiary_name1'), 'beneficiary_name2' => RightPaddedStringColumnFactory::create($beneficiary->getName2(), $max_length = 35, $label = 'beneficiary_name2'), 'beneficiary_name3' => RightPaddedStringColumnFactory::create($beneficiary->getName3(), $max_length = 35, $label = 'beneficiary_name3'), 'beneficiary_add1' => RightPaddedStringColumnFactory::create($beneficiary->getAddress1(), $max_length = 35, $label = 'beneficiary_add1'), 'beneficiary_add2' => RightPaddedStringColumnFactory::create($beneficiary->getAddress2(), $max_length = 35, $label = 'beneficiary_add2'), 'beneficiary_add3' => RightPaddedStringColumnFactory::create($beneficiary->getAddress3(), $max_length = 35, $label = 'beneficiary_add3'), 'beneficiary_postcode' => RightPaddedStringColumnFactory::create($beneficiary->getPostcode(), 15, $label = 'beneficiary_postcode'), 'beneficiary_countrycode' => RightPaddedStringColumnFactory::create($line->config->get('beneficiary_countrycode'), $length = 3, $label = 'beneficiary_countrycode'), 'filler' => RightPaddedStringColumnFactory::create('', 6, $label = 'filler'), 'settlement_ac_no' => LeftPaddedZerofillStringColumnFactory::create($settlement_ac_no, 20, $label = 'settlement_ac_no'), 'currency' => ConfigurableStringColumnFactory::create($config = $line->config, 'payment_currency', $label = 'currency'), 'handling_opt' => PresetStringColumnFactory::create('M', $label = 'handling_opt'), 'mail_to_party' => PresetStringColumnFactory::create('BEN', $label = 'mail_to_party'), 'mail_name_add1' => RightPaddedStringColumnFactory::create('', 35, $label = 'mail_name_add1'), 'mail_name_add2' => RightPaddedStringColumnFactory::create('', 35, $label = 'mail_name_add2'), 'mail_name_add3' => RightPaddedStringColumnFactory::create('', 35, $label = 'mail_name_add3'), 'mail_name_add4' => RightPaddedStringColumnFactory::create('', 35, $label = 'mail_name_add4'), 'mail_postcode' => RightPaddedStringColumnFactory::create('', 15, $label = 'mail_postcode'), 'mail_countrycode' => RightPaddedStringColumnFactory::create('', 3, $label = 'mail_countrycode'), 'filler1' => RightPaddedStringColumnFactory::create('', 50, $label = 'filler1'), 'payment_indicator' => RightPaddedStringColumnFactory::create('', 1, $label = 'payment_indicator'), 'print_mode' => PresetStringColumnFactory::create('P', $label = 'print_mode'), 'beneficiary_id' => RightPaddedStringColumnFactory::create('', 20, $label = 'beneficiary_id'), 'print_advice_instruction' => PresetStringColumnFactory::create('1', $label = 'print_advice_instruction'), 'filler2' => RightPaddedStringColumnFactory::create('', 198, $label = 'filler2'), 'payer_name1' => RightPaddedStringColumnFactory::create('', 35, $label = 'payer_name1'), 'payer_name2' => RightPaddedStringColumnFactory::create('', 35, $label = 'payer_name2'), 'payer_refno' => RightPaddedStringColumnFactory::create($beneficiary->getPaymentId(), 30, $label = 'payer_refno'), 'email' => RightPaddedStringColumnFactory::create($beneficiary->getEmail(), 50, $label = 'email'), 'fax' => RightPaddedStringColumnFactory::create('', 20, $label = 'fax'), 'filler3' => RightPaddedStringColumnFactory::create('', 10, $label = 'filler3')];
     $line->setColumns($columns);
     return $line;
 }