Module: Ufebs

Extended by:
Ufebs
Included in:
Ufebs
Defined in:
lib/ufebs.rb,
lib/ufebs/configuration.rb,
lib/ufebs/entities/bank.rb,
lib/ufebs/fields/header.rb,
lib/ufebs/modules/common.rb,
lib/ufebs/entities/acc_doc.rb,
lib/ufebs/entities/ed_info.rb,
lib/ufebs/entities/session.rb,
lib/ufebs/requests/receipt.rb,
lib/ufebs/documents/package.rb,
lib/ufebs/entities/ed_ref_id.rb,
lib/ufebs/fields/payment_doc.rb,
lib/ufebs/entities/trans_info.rb,
lib/ufebs/documents/bank_order.rb,
lib/ufebs/documents/some_order.rb,
lib/ufebs/entities/participant.rb,
lib/ufebs/documents/payer_order.rb,
lib/ufebs/entities/partial_payt.rb,
lib/ufebs/requests/test_request.rb,
lib/ufebs/documents/base_payment.rb,
lib/ufebs/entities/ed_field_list.rb,
lib/ufebs/requests/define_answer.rb,
lib/ufebs/requests/group_request.rb,
lib/ufebs/requests/status_answer.rb,
lib/ufebs/documents/payment_order.rb,
lib/ufebs/entities/ed_reestr_info.rb,
lib/ufebs/entities/initial_packet.rb,
lib/ufebs/requests/define_request.rb,
lib/ufebs/documents/memorial_order.rb,
lib/ufebs/requests/package_request.rb,
lib/ufebs/schema_validation_result.rb,
lib/ufebs/documents/collection_order.rb,
lib/ufebs/documents/package_response.rb,
lib/ufebs/documents/payment_response.rb,
lib/ufebs/entities/departmental_info.rb,
lib/ufebs/entities/processing_details.rb,
lib/ufebs/requests/group_status_answer.rb,
lib/ufebs/documents/payment_order_ed107.rb,
lib/ufebs/documents/payment_order_ed108.rb,
lib/ufebs/documents/payment_requirement.rb,
lib/ufebs/entities/ed_define_answer_info.rb,
lib/ufebs/entities/ed_define_request_info.rb,
lib/ufebs/requests/negative_status_notification.rb,
lib/ufebs/requests/positive_status_notification.rb

Defined Under Namespace

Modules: Common, Documents, Entities, Fields, Requests Classes: Configuration, SchemaValidationResult

Instance Method Summary collapse

Instance Method Details

#configurationObject



26
27
28
# File 'lib/ufebs.rb', line 26

def configuration
  @configuration ||= Configuration.new
end

#configure(&block) ⇒ Object

Конфигурация



31
32
33
# File 'lib/ufebs.rb', line 31

def configure(&block)
  block.call(configuration)
end

#ED101(params) ⇒ Ufebs::Documents::PaymentOrder+

Создание XML по формату ED101(Платежное поручение)

Examples:

Пример документа

ed101 = Ufebs::ED101(
  number: 7,
  sum: 150000,
  receipt_date: Time.now,
  acc_doc: { number: '3', date: Time.now },
  ed_author: 4525595000
  purpose: 'оплата в том числе ндс 4000 руб',
  payer: {
    name: 'ООО ТЕСТ',
    account: '40702810200203001037',
    inn: '7726274727',
    bank_bic: '044525545',
    bank_account: '30101810300000000545'
  },
  payee: {
    name: 'ООО ТЕСТ',
    account: '40702810200203001037',
    inn: '7726274727',
    bank_bic: '044525545',
    bank_account: '30101810300000000545'
  },
  departmental_info: {
    kbk: '18210301000010000110',
    okato: '45263591000',
    drawer_status: '01',
    tax_period: 'МС.03.2017',
    tax_payt_kind: 'НС',
    doc_no: '111',
    payt_reason: 'ТП'
  }
)
ed101.to_xml(Nokogiri::XML::Builder.new(encoding: 'UTF-8'), nil, nil).to_xml #=>
 '<?xml version="1.0" encoding="UTF-8"?>
 <ed:ED101 xmlns:ed="urn:cbr-ru:ed:v2.0" EDNo="7" EDDate="2017-12-11" EDAuthor="4525595000" Sum="150000" TransKind="01" ChargeOffDate="2017-12-11" ReceiptDate="2017-12-11" SystemCode="01" Priority="0">
   <ed:AccDoc AccDocNo="003" AccDocDate="2017-12-11"/>
   <ed:Payer INN="7726274727" PersonalAcc="40702810200203001037">
     <ed:Name>ООО ТЕСТ</ed:Name>
     <ed:Bank BIC="044525545" CorrespAcc="30101810300000000545"/>
   </ed:Payer>
   <ed:Payee INN="7726274727" PersonalAcc="40702810200203001037">
     <ed:Name>ООО ТЕСТ</ed:Name>
     <ed:Bank BIC="044525545" CorrespAcc="30101810300000000545"/>
   </ed:Payee>
   <ed:Purpose>оплата в том числе ндс 4000 руб</ed:Purpose>
   <ed:DepartmentalInfo CBC="18210301000010000110" OKATO="45263591000" TaxPeriod="МС.03.2017" DrawerStatus="01" PaytReason="ТП" DocNo="111" TaxPaytKind="НС" DocDate="2017-12-11"/>
 </ed:ED101>'

Чтение XML

Ufebs::ED101(File.read('packet_epd.xml')) #=> [#<Ufebs::Documents::PaymentOrder:0x00..>]

Parameters:

  • params (Hash, String)

    Hash значений документа или его строковое представление в виде XML

Options Hash (params):

  • :number (Integer)

    номер документа аттрибут EDNo

  • :sum (Integer)

    Сумма документа аттрибут Sum

  • :receipt_date (DateTime)

    ReceiptDate дата обработки

  • :acc_doc (Hash)

    AccDoc информация о счете(number: Номер исходного расчетного документа, date: Дата выписки расчетного документа

  • :purpose (String)

    Purpose предназначение-описание платежа

  • :payer (Hash)

    Payer плательщик

  • :payer (Hash)

    Payee получатель

  • :departmental_info (Hash) — default: {}

    DepartmentalInfo Ведомственная информация

Returns:



102
103
104
# File 'lib/ufebs.rb', line 102

def ED101(params)
  params.is_a?(Hash) ? Ufebs::Documents::PaymentOrder.new(params) : Ufebs::Documents::PaymentOrder.parse(params)
end

#ED103(params) ⇒ Object



106
107
108
# File 'lib/ufebs.rb', line 106

def ED103(params)
  params.is_a?(Hash) ? Ufebs::Documents::PaymentRequirement.new(params) : Ufebs::Documents::PaymentRequirement.parse(params)
end

#ED104(params) ⇒ Object



110
111
112
# File 'lib/ufebs.rb', line 110

def ED104(params)
  params.is_a?(Hash) ? Ufebs::Documents::CollectionOrder.new(params) : Ufebs::Documents::CollectionOrder.parse(params)
end

#ED105(params) ⇒ Object



114
115
116
# File 'lib/ufebs.rb', line 114

def ED105(params)
  params.is_a?(Hash) ? Ufebs::Documents::PayerOrder.new(params) : Ufebs::Documents::PayerOrder.parse(params)
end

#ED107(params) ⇒ Object



118
119
120
# File 'lib/ufebs.rb', line 118

def ED107(params)
  params.is_a?(Hash) ? Ufebs::Documents::PaymentOrderEd107.new(params) : Ufebs::Documents::PaymentOrderEd107.parse(params)
end

#ED108(params) ⇒ Object



122
123
124
# File 'lib/ufebs.rb', line 122

def ED108(params)
  params.is_a?(Hash) ? Ufebs::Documents::PaymentOrderEd108.new(params) : Ufebs::Documents::PaymentOrderEd108.parse(params)
end

#ED109(params) ⇒ Object



126
127
128
# File 'lib/ufebs.rb', line 126

def ED109(params)
  params.is_a?(Hash) ? Ufebs::Documents::BankOrder.new(params) : Ufebs::Documents::BankOrder.parse(params)
end

#ED110(params) ⇒ Object



130
131
132
# File 'lib/ufebs.rb', line 130

def ED110(params)
  params.is_a?(Hash) ? Ufebs::Documents::SomeOrder.new(params) : Ufebs::Documents::SomeOrder.parse(params)
end

#ED111(params) ⇒ Object



134
135
136
# File 'lib/ufebs.rb', line 134

def ED111(params)
  params.is_a?(Hash) ? Ufebs::Documents::MemorialOrder.new(params) : Ufebs::Documents::MemorialOrder.parse(params)
end

#ED201(params) ⇒ Object



138
139
140
# File 'lib/ufebs.rb', line 138

def ED201(params)
  Ufebs::Requests::NegativeStatusNotification.parse(params)
end

#ED205(params) ⇒ Object



142
143
144
# File 'lib/ufebs.rb', line 142

def ED205(params)
  Ufebs::Requests::StatusAnswer.parse(params)
end

#ED206(params) ⇒ Object



146
147
148
149
# File 'lib/ufebs.rb', line 146

def ED206(params)
  return Ufebs::Documents::PaymentResponse.new(params) if params.is_a?(Hash)
  Ufebs::Documents::PaymentResponse.parse(params)
end

#ED207(params) ⇒ Object



151
152
153
154
# File 'lib/ufebs.rb', line 151

def ED207(params)
  return Ufebs::Requests::GroupStatusAnswer.new(params) if params.is_a?(Hash)
  Ufebs::Requests::GroupStatusAnswer.parse(params)
end

#ED208(params) ⇒ Object



156
157
158
# File 'lib/ufebs.rb', line 156

def ED208(params)
  Ufebs::Requests::PositiveStatusNotification.parse(params)
end

#ED210(params) ⇒ Object



160
161
# File 'lib/ufebs.rb', line 160

def ED210(params)
end

#ED211(params) ⇒ Object

Создание/Парсинг выписки ED211

Examples:

Пример

ed211 = Ufebs::Requests::Receipt.new(
  number: '8',
  ed_date: '2003-04-14',
  ed_author: '4525545000',
  ed_receiver: '4525000000',
  abstract_date: Date.today,
  abstract_kind: '1',
  acc: '30101810945250000420',
  bic: '044525000',
  end_time: '00:47:07',
  enter_bal: '72619100',
  inquiry_session: '0',
  last_movet_date: Date.today,
  out_bal: '72619100',
  rtgs_unconfirmed_ed: '0'
)


181
182
183
# File 'lib/ufebs.rb', line 181

def ED211(params)
  params.is_a?(Hash) ? Ufebs::Requests::Receipt.new(params) : Ufebs::Requests::Receipt.parse(params)
end

#ED218(params) ⇒ Object



185
186
# File 'lib/ufebs.rb', line 185

def ED218(params)
end

#ED243(params) ⇒ Object



188
189
190
191
192
193
194
# File 'lib/ufebs.rb', line 188

def ED243(params)
  if params.is_a?(Hash)
    Ufebs::Requests::DefineRequest.new(params)
  else
    Ufebs::Requests::DefineRequest.parse(params)
  end
end

#ED244(params) ⇒ Object



196
197
198
199
200
201
202
# File 'lib/ufebs.rb', line 196

def ED244(params)
  if params.is_a?(Hash)
    Ufebs::Requests::DefineAnswer.new(params)
  else
    Ufebs::Requests::DefineAnswer.parse(params)
  end
end

#ED999(params) ⇒ Object

XML запрос-зонд

Parameters:

  • params (Hash)
  • :number (Hash)

    a customizable set of options

  • :ed_date (Hash)

    a customizable set of options

  • :ed_author (Hash)

    a customizable set of options



209
210
211
# File 'lib/ufebs.rb', line 209

def ED999(params)
  Ufebs::Requests::TestRequest.new(params)
end

#namespaceObject



14
15
16
# File 'lib/ufebs.rb', line 14

def namespace
  "urn:cbr-ru:ed:v2.0".freeze
end

#PacketEPD(payment_eds, params) ⇒ Object



213
214
215
# File 'lib/ufebs.rb', line 213

def PacketEPD(payment_eds, params)
  Ufebs::Documents::Package.new(payment_eds, params)
end

#PacketESID(params) ⇒ Object



217
218
219
# File 'lib/ufebs.rb', line 217

def PacketESID(params)
  Ufebs::Documents::PackageResponse.parse(params)
end

#Session(params) ⇒ Ufebs::Entities::Session

Получение Сессии(Номера рейса)

Examples:

Пример

session = Ufebs::Session(File.read('doc.xml')) #=> #<Ufebs::Entities::Session:0x00..>

Returns:



22
23
24
# File 'lib/ufebs.rb', line 22

def Session(params)
  params.is_a?(Hash) ? Ufebs::Entities::Session.new(params) : Ufebs::Entities::Session.parse(params, single: true)
end

#validate(doc) ⇒ Object



221
222
223
224
225
226
227
228
229
230
# File 'lib/ufebs.rb', line 221

def validate(doc)
  doc = Nokogiri::XML(doc) if doc.is_a?(String)

  errors = []
  validation_schema.validate(doc).each do |error|
    errors << error.message
  end

  Ufebs::SchemaValidationResult.new(errors)
end

#validation_schemaObject



35
36
37
38
39
40
# File 'lib/ufebs.rb', line 35

def validation_schema
  @validation ||= begin
                    validation = Nokogiri::XML(File.read(configuration.schemas), configuration.schemas)
                    Nokogiri::XML::Schema.from_document(validation)
                  end
end