Module: Sunnyside
- Included in:
- EdiPayment, Ledger, LedgerReport, ManualPayment, Query, Reporter
- Defined in:
- lib/sunnyside/query/query.rb,
lib/sunnyside.rb,
lib/sunnyside/ftp.rb,
lib/sunnyside/menu.rb,
lib/sunnyside/version.rb,
lib/sunnyside/advanced.rb,
lib/sunnyside/ledger/edi.rb,
lib/sunnyside/expiring_auth.rb,
lib/sunnyside/ledger/ledger.rb,
lib/sunnyside/ledger/private.rb,
lib/sunnyside/reports/report.rb,
lib/sunnyside/models/db_setup.rb,
lib/sunnyside/reports/private.rb,
lib/sunnyside/reports/mco_mltc.rb,
lib/sunnyside/ledger/auth_report.rb,
lib/sunnyside/reports/pdf_report.rb,
lib/sunnyside/models/sequel_classes.rb,
lib/sunnyside/cash_receipts/cash_receipt.rb
Overview
definitely a work in progress.
Defined Under Namespace
Classes: Auth, AuthReport, CashReceipt, Charge, Claim, ClaimEOP, ClaimEntry, ClaimParser, Client, ClientData, Denial, EdiPayment, EdiReader, EditService, ExpiringAuth, Filelib, IncomingFiles, Invoice, InvoiceDetail, InvoiceParse, Ledger, LedgerReport, Login, ManualPayment, Menu, OutgoingFiles, PageData, ParseInvoice, Payment, PrivateClient, Provider, Query, ReportMCO, Reporter, Service, ServiceEntry, ServiceLine, ServiceParser, SunnyFTP, Visit
Constant Summary collapse
- DRIVE =
ENV["HOMEDRIVE"]
- DB =
Sequel.connect("sqlite://sunnyside.db")
- VERSION =
stupid, no-good, lousy rubygems not letting me yank my bad install. grumble grumble…
"0.1.2"
- PRIVATE_CLIENTS =
['TABICKMAN', 'JIBAJA', 'SUNNYSIDE COMMUNITY', 'BARROW', 'JENSEN']
Class Method Summary collapse
- .access_ftp ⇒ Object
- .add_denial_data ⇒ Object
- .add_provider_to_ftp ⇒ Object
- .add_providers ⇒ Object
- .advanced_opts ⇒ Object
- .cash_receipt ⇒ Object
- .check_prompt ⇒ Object
- .create_folders ⇒ Object
- .create_tables ⇒ Object
- .determine_browser ⇒ Object
- .edi_parser ⇒ Object
- .expiring_auth ⇒ Object
-
.ledger_file ⇒ Object
This should be redone.
-
.parse_pdf ⇒ Object
REG LOC is the only repeating element that would indicate that there’s a new client being read.
- .private_clients ⇒ Object
- .process_private ⇒ Object
- .query ⇒ Object
- .rails_server ⇒ Object
- .run_mco_mltc ⇒ Object
- .run_report ⇒ Object
Instance Method Summary collapse
Class Method Details
.access_ftp ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'lib/sunnyside/ftp.rb', line 5 def self.access_ftp Login.all.each do |login| access = SunnyFTP.new(site: login.site, username: login.username, password: login.password, provider: login.provider) access.log_on puts "Logged into #{access.name}..." access.check_for_new_files end end |
.add_denial_data ⇒ Object
143 144 145 |
# File 'lib/sunnyside/models/db_setup.rb', line 143 def add_denial_data # CSV.foreach('examples/denial_data.csv', 'r') { |row| DB[:denials].insert(denial_code: row[0], denial_explanation: row[1]) } end |
.add_provider_to_ftp ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/sunnyside/advanced.rb', line 52 def self.add_provider_to_ftp Provider.all.each { |prov| puts "#{prov.id}: #{prov.name}"} print "Type in the corresponding ID Number for the provider you would like to add to FTP: " provider = Provider[gets.chomp].abbreviation puts "You've selected #{provider}" print "Type in the ftp address now: " site = gets.chomp print "Type in the username now: " username = gets.chomp print "Type in the password now: " password = gets.chomp review = "-------Provider: #{provider}, Site: #{site}, Username: #{username}, Password: #{password}--------------" puts "Please review the following information: " puts '-' * review.length puts review puts '-' * review.length puts "Is this correct? Type Y or N." if gets.chomp.downcase == 'y' Login.insert(site: site, username: username, password: password, provider: provider) Dir.mkdir("#{DRIVE}/sunnyside-files/ftp/835/#{provider}") Dir.mkdir("#{DRIVE}/sunnyside-files/ftp/837/#{provider}") else puts 'Please try again.' Sunnyside.add_provider_to_ftp end end |
.add_providers ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/sunnyside/models/db_setup.rb', line 147 def add_providers DB[:providers].insert(:credit_account=>1206, :fund=>500, :debit_account=>5005, :name=>"AMERIGROUP 2", :abbreviation=>"AMG", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1207, :fund=>300, :debit_account=>5007, :name=>"CHILDREN'S AID SOCIETY", :abbreviation=>"CAS", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1226, :fund=>300, :debit_account=>5026, :name=>"COMPREHENSIVE CARE MANAGEMENT", :abbreviation=>"CCM", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1203, :fund=>300, :debit_account=>5002, :name=>"DOMINICAN SISTERS FAM HLTH", :abbreviation=>"DSF", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1209, :fund=>300, :debit_account=>5009, :name=>"ELDERSERVE HEALTH", :abbreviation=>"ELD", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1212, :fund=>300, :debit_account=>5012, :name=>"EMBLEM HEALTH", :abbreviation=>"EMB", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1201, :fund=>300, :debit_account=>5001, :name=>"GUILDNET", :abbreviation=>"G", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1227, :fund=>500, :debit_account=>5027, :name=>"HEALTH CARE PARTNERS", :abbreviation=>"HCP", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1218, :fund=>500, :debit_account=>5018, :name=>"HEALTH FIRST", :abbreviation=>"HFS", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1216, :fund=>500, :debit_account=>5016, :name=>"HEALTH INSURANCE PLAN OF NY", :abbreviation=>"HIP", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1223, :fund=>300, :debit_account=>5023, :name=>"HHH LONG TERM HOME HLTH CARE", :abbreviation=>"HHH", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1228, :fund=>300, :debit_account=>5028, :name=>"INDEPENDENCE CARE SYSTEMS", :abbreviation=>"ICS", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1217, :fund=>500, :debit_account=>5017, :name=>"METROPLUS HEALTH", :abbreviation=>"MPH", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1219, :fund=>500, :debit_account=>5019, :name=>"NEIGHBORHOOD HEALTH PROVIDERS", :abbreviation=>"NHP", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1221, :fund=>500, :debit_account=>5021, :name=>"NYS CATHOLIC/FIDELIS", :abbreviation=>"FID", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1200, :fund=>300, :debit_account=>5000, :name=>"PRIVATE", :abbreviation=>"P", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1204, :fund=>300, :debit_account=>5004, :name=>"SENIOR HEALTH PARTNERS", :abbreviation=>"SHP", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1202, :fund=>300, :debit_account=>5003, :name=>"SUNNYSIDE COMMUNITY SERVICES", :abbreviation=>"SCS", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1213, :fund=>500, :debit_account=>5013, :name=>"UNITED HEALTH CARE", :abbreviation=>"UHC", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1229, :fund=>500, :debit_account=>5029, :name=>"VNSNY CHOICE SELECT HEALTH", :abbreviation=>"VCS", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1224, :fund=>500, :debit_account=>5024, :name=>"WELCARE OF NEW YORK, INC.", :abbreviation=>"WEL", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1310, :fund=>300, :debit_account=>5030, :name=>"VILLAGE CARE MAX", :abbreviation=>"VIL", :prov_type=>"MLTC") DB[:providers].insert(:credit_account=>1222, :fund=>500, :debit_account=>5022, :name=>"AFFINITY HEALTH PLUS", :abbreviation=>"AFF", :prov_type=>"MCO") DB[:providers].insert(:credit_account=>1218, :fund=>500, :debit_account=>5018, :name=>"HEALTH PLUS PHSP,INC", :abbreviation=>"HFS", :prov_type=>"MCO") end |
.advanced_opts ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/sunnyside/advanced.rb', line 2 def self.advanced_opts puts "1.) Add new provider" puts "2.) Export A/R denials" case gets.chomp when '1' print "Type in the provider name _EXACTLY_ how it appears on the SanData archive report files (e.g. Guildnet is always GUILDNET): " provider = gets.chomp print "Now type in the abbreviation (batch initials - e.g. MetroPlus Health is MPH): " abbrev = gets.chomp print "Now type in the CREDIT account that is used in FUND EZ: " credit = gets.chomp print "Now type in the DEBIT account that is used in FUND EZ: " debit = gets.chomp print "And finally, type in the FUND number that is used in FUND EZ: " fund = gets.chomp review = "--------Name: #{provider}, Credit Account: #{credit}, Debit Account: #{debit}, Fund: #{fund}, Abbreviation: #{abbrev}--------" puts "Please review the below information." puts '-' * review.length puts review puts '-' * review.length print "Is this correct? (Y for yes, N for No): " raise 'You have an empty field! Start over!' if [provider, credit, debit, fund, abbrev].any? { |elem| elem.empty? } if gets.chomp.upcase == 'Y' provider = Provider.insert(name: provider, credit_account: credit, debit_account: debit, fund: fund, abbreviation: abbrev) puts "#{Provider[provider].name} added." else Sunnyside.advanced_opts end else exit end end |
.cash_receipt ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/sunnyside/cash_receipts/cash_receipt.rb', line 3 def self.cash_receipt puts "1.) EDI PAYMENT" puts "2.) MANUAL PAYMENT" puts "3.) RESET A/R SPREADSHEET" case gets.chomp when '1' cash_receipt = CashReceipt.new(:electronic) when '2' cash_receipt = CashReceipt.new(:manual) when '3' CSV.open("#{DRIVE}/sunnyside-files/cash_receipts/EDI-citywide-import.csv", "w") { |row| row << ['Seq','Receipt','post_date','other id','invoice','header memo','batch','doc date','detail memo','fund','account','cc1','cc2','cc3','debit','credit'] } end cash_receipt.collate if cash_receipt end |
.check_prompt ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/sunnyside/reports/report.rb', line 93 def self.check_prompt Provider.all.each { |prov| puts "#{prov.id}: #{prov.name}"} print "Type in the Provider ID: " provider = Provider[gets.chomp] Payment.where(provider_id: provider.id).all.each { |check| puts "#{check.id}: Number - #{check.check_number} Amount - #{check.check_total}"} print "Type in the Check ID: " payments = gets.chomp.split.map { |chk| Payment[chk] } # For ICS checks, since for some reason the check number doesn't match the EDI TRN field. payments.each do |payment| if payment.provider_id == 12 print "type in the correct ICS check #: " payment.update(:check_number => gets.chomp) end yield payment end end |
.create_folders ⇒ Object
4 5 6 7 8 9 10 11 |
# File 'lib/sunnyside/models/db_setup.rb', line 4 def create_folders folders = ['db', '835', '837', 'summary', 'cash_receipts', 'new-ledger', 'private', 'private/archive', 'summary/archive', '837/archive', '835/archive', 'ftp', 'ftp/837', 'ftp/837/GUILDNET', 'ftp/837/CPHL', 'ftp/837/ELDERSERVE', 'ftp/835', 'ftp/835/GUILDNET', 'ftp/835/CPHL', 'ftp/835/ELDERSERVE', 'pdf-reports' ] Dir.mkdir("#{DRIVE}/sunnyside-files") folders.each { |folder| Dir.mkdir("#{DRIVE}/sunnyside-files/#{folder}") } end |
.create_tables ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/sunnyside/models/db_setup.rb', line 13 def create_tables DB.create_table :logins do primary_key :id String :site String :username String :password String :provider end DB.create_table :charges do primary_key :id foreign_key :invoice_id, :invoices foreign_key :provider_id, :providers Date :dos Float :amount Float :units String :service_code String :filename end DB.create_table :invoices do Integer :invoice_number, :primary_key=>true index :invoice_number Float :amount Date :post_date, :default=>Date.today foreign_key :client_id, :clients foreign_key :provider_id, :providers foreign_key :filelib_id, :filelibs Integer :service_number String :auth String :client_name Float :rate Float :hours String :recipient_id end DB.create_table :payments do primary_key :id foreign_key :provider_id, :providers foreign_key :filelib_id, :filelibs Float :check_total Date :post_date, :default=>Date.today String :status Integer :check_number end DB.create_table :claims do primary_key :id index :id String :control_number foreign_key :payment_id, :payments foreign_key :invoice_id, :invoices foreign_key :client_id, :clients Float :paid Float :billed String :status String :recipient_id foreign_key :provider_id, :providers Date :post_date end DB.create_table :services do primary_key :id foreign_key :claim_id, :claims foreign_key :payment_id, :payments foreign_key :invoice_id, :invoices foreign_key :client_id, :clients String :service_code Float :paid Float :billed String :denial_reason Float :units Date :dos end DB.create_table :clients do Integer :client_number, :primary_key=>true String :client_name String :fund_id String :recipient_id foreign_key :provider_id, :providers String :prov_type, :default=>'MLTC' Date :dob end DB.create_table :providers do primary_key :id Integer :credit_account Integer :fund Integer :debit_account String :name String :abbreviation String :prov_type String :edi_identifier end DB.create_table :filelibs do primary_key :id String :filename String :purpose String :file_type Time :created_at end DB.create_table :visits do primary_key :id String :service_code String :modifier foreign_key :invoice_id, :invoices foreign_key :client_id, :clients Float :amount Float :units Date :dos end DB.create_table :denials do primary_key :denial_code, :primary_key=>true String :denial_explanation end DB.create_table :authorizations do primary_key :id String :auth foreign_key :client_id, :clients Integer :service_id Date :start_date Date :end_date end end |
.determine_browser ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/sunnyside/advanced.rb', line 44 def self.determine_browser if Dir.exist?("#{DRIVE}/Program Files (x86)") Dir.chdir("#{DRIVE}/Program Files (x86)/Mozilla Firefox") else Dir.chdir("#{DRIVE}/Program Files/Mozilla Firefox") end end |
.edi_parser ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/sunnyside/ledger/edi.rb', line 2 def self.edi_parser print "checking for new files...\n" Dir["#{DRIVE}/sunnyside-files/835/*.txt"].each do |file| if Filelib.where(filename: file).count > 0 puts "This file has been processed already. File removed." File.delete(file) else print "processing #{file}...\n" file_data = File.open(file) data = file_data.read # Detect to see if the EDI file already has new lines inserted. If so, the newlines are removed before the file gets processed. data.gsub!(/\n/, '') data = data.split(/~CLP\*/) edi_file = EdiReader.new(data) edi_file.parse_claims Filelib.insert(filename: File.basename(file), purpose: '835') file_data.close FileUtils.mv(file, "#{DRIVE}/sunnyside-files/835/archive/#{File.basename(file)}") end end end |
.expiring_auth ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/sunnyside/expiring_auth.rb', line 2 def self.expiring_auth Dir["data/exp auth/*.txt"].each do |file| file = File.open(file) data = file.read.split("\n").reject { |line| line =~ /\f/} data.each { |line| if line =~ /^.{27}\d{7}\s+\d{7}\s/ client = line.slice!(0..26) line = line.split(' ').keep_if { |elem| elem.length >= 4 } data = ExpiringAuth.new(file, client, line) print "#{line}\n" end } file.close FileUtils.mv(file, "data/exp auth/previous/#{File.basename(file)}") end clients = Authorization.map(:client_number).uniq clients.each { |client| most_recent_auth = Authorization.where(client_number: client).exclude(auth: 'Blanket').order(:end_date).last # that gets the most recent auth that isnt a blanket. # visits = Visit.where(member_id: client).where('dos > ?', most_recent_auth.end_date) if !most_recent_auth.nil? # puts "#{client} #{visits.count}" if !visits.nil? # that gets all the visits that has that particular client number that is also GREATER than the most_recent_auth's end date # client.each { |x| puts x.client } auth_data = Authorization.where(client_number: client) auth = auth_data.order(:end_date).all.last AuthReport.new(auth_data, auth).create_csv } end |
.ledger_file ⇒ Object
This should be redone.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/sunnyside/ledger/ledger.rb', line 4 def self.ledger_file files = Dir["#{DRIVE}/sunnyside-files/summary/*.PDF"] files.each do |file| if Filelib.where(filename: file).count == 0 puts "processing #{file}..." ledger = Ledger.new(file) ledger.process_file Filelib.insert(filename: file, purpose: 'summary') FileUtils.mv(file, "#{DRIVE}/sunnyside-files/summary/archive/#{File.basename(file)}") ledger.export_to_csv end end if files.size == 0 puts "It appears there are no new files to process. Do you wish to create a csv file for a specific post date? (Y or N) " if gets.chomp.downcase == 'y' print "enter the date (YYYY-MM-DD): " post_date = Date.parse(gets.chomp) puts "File being created..." LedgerReport.new(post_date) end end end |
.parse_pdf ⇒ Object
REG LOC is the only repeating element that would indicate that there’s a new client being read. So instead of reading the pdf report page by page, it would be best to compress the text from every page into a single string and then parse from there.
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/sunnyside/ledger/auth_report.rb', line 6 def self.parse_pdf files = Dir["#{DRIVE}/sunnyside-files/837/*.PDF"].select { |file| Filelib.where(filename: file).count == 0 } files.each do |file| puts "processing #{file}..." data = PDF::Reader.new(file).pages.map { |page| page.raw_content.gsub(/^\(\s|\)'$/, '') }.join data.split(/(?=REG\s+LOC)/).each { |entry| ParseInvoice.new(entry).process } Filelib.insert(filename: file, purpose: '837') FileUtils.mv(file, "#{DRIVE}/sunnyside-files/837/archive/#{File.basename(file)}") end end |
.private_clients ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/sunnyside/reports/private.rb', line 4 def self.private_clients Dir.mkdir("#{DRIVE}/sunnyside-files/pdf-reports/private") if !Dir.exist?("#{DRIVE}/sunnyside-files/pdf-reports/private") file = Dir["#{DRIVE}/sunnyside-files/private/archive/*.PDF"].last post_date = Date.parse(File.basename(file)[0..7]) Invoice.where(post_date: post_date, provider_id: 16).all.each { |inv| puts "#{inv.client_id} #{Client[inv.client_id].client_name}"} puts "Type in the IDs next to the client's name, each separated by a space. " clients = gets.chomp.split.map { |client| Client[client].client_name }.push('SUNNYSIDE COMMUNITY') private_client = PrivateClient.new(file, post_date) clients.each { |client| private_client.create_doc(client) } end |
.process_private ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/sunnyside/ledger/private.rb', line 2 def self.process_private Dir["#{DRIVE}/sunnyside-files/private/*.PDF"].each do |file| if Filelib.where(filename: file).count == 0 puts "processing #{file}..." PDF::Reader.new(file).pages.each { |inv| page = inv.text.split(/\n/) InvoiceParse.new(page).process if page.include?('Remit') } end Filelib.insert(filename: file, purpose: 'private client visit data') FileUtils.mv(file, "#{DRIVE}/sunnyside-files/private/archive/#{File.basename(file)}") end end |
.query ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/sunnyside/query/query.rb', line 5 def self.query puts "1.) VIEW CLIENTS BY PROVIDER" puts "2.) " case gets.chomp when '1' Provder.all.each { |prov| puts "#{prov.id}: #{prov.name}"} print "Type in the provider ID number: " provider = Provider[gets.chomp] query = Query.new(provider) query. # puts 'Type in post date (YYYY-MM-DD)' # date = Date.parse(gets.chomp) # if date.is_a?(Date) # Invoice.where(post_date: date).all.each { |invoice| Sunnyside.payable_csv(invoice, date) } # end end end |
.rails_server ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/sunnyside/advanced.rb', line 36 def self.rails_server puts "Please wait..." Dir.chdir("R:/Departments/AR Department/sunnyside-app") %x(rails s) end |
.run_mco_mltc ⇒ Object
2 3 4 5 6 7 8 |
# File 'lib/sunnyside/reports/mco_mltc.rb', line 2 def self.run_mco_mltc print "Type in post date (YYYY-MM-DD): " post_date = gets.chomp Provider.map(:name).each do |provider| ReportMCO.new(provider, post_date).run end end |
.run_report ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/sunnyside/reports/pdf_report.rb', line 5 def self.run_report print "Type in the post date (YYYY-MM-DD): " post_date = Date.parse(gets.chomp) self.check_prompt { |payment| provider = Provider[payment.provider_id] report = Reporter.new(payment, post_date, provider) report.check_header } end |
Instance Method Details
#payable_csv(inv, post_date) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/sunnyside/reports/report.rb', line 51 def payable_csv(inv, post_date) prov = Provider[inv.provider_id] if Client[inv.client_id].fund_id.empty? puts "Whoops! It appears #{Client[inv.client_id].client_name} for #{prov.name} doesn't have a fund id. Please retrieve it from FUND EZ and type it in now." Client.where(client_number: inv.client_id).update(:fund_id => gets.chomp) end prov_name = if prov.name == 'AMERIGROUP 2' 'AMERIGROUP' else prov.name end fund_id = Client[inv.client_id].fund_id CSV.open("#{DRIVE}/sunnyside-files/new-ledger/#{inv.post_date}-IMPORT-FUND-EZ-LEDGER.csv", "a+") do |row| row << [1, inv.invoice_number, post_date.strftime('%m/%d/%y'), fund_id, prov_name, post_date.strftime('%m/%d/%y'), "To Record #{post_date.strftime('%m/%d/%y')} Billing", "#{post_date.strftime('%m')}/#{post_date.strftime('%y')}#{prov.abbreviation}", post_date.strftime('%m/%d/%y'), "To Rec for W/E #{post_date - 6} Billing", prov.fund, prov.credit_account, '', '', '', inv.amount, ''] row << [2, inv.invoice_number, post_date.strftime('%m/%d/%y'), fund_id, prov_name, post_date.strftime('%m/%d/%y'), "To Record #{post_date.strftime('%m/%d/%y')} Billing", "#{post_date.strftime('%m')}/#{post_date.strftime('%y')}#{prov.abbreviation}", post_date.strftime('%m/%d/%y'), "To Rec for W/E #{post_date - 6} Billing", prov.fund, prov.debit_account, prov.fund, '', prov.prov_type, '', inv.amount] end end |
#receivable_csv(claim, payment, post_date) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/sunnyside/reports/report.rb', line 2 def receivable_csv(claim, payment, post_date) total = claim.paid prov = Provider[claim.provider_id] if Client[claim.client_id].fund_id.empty? puts "Whoops! It appears #{Client[claim.client_id].client_name} doesn't have a fund id. Please retrieve it from FUND EZ and type it in now." Client.where(client_number: claim.client_id).update(:fund_id => gets.chomp) end fund_id = Client[claim.client_id].fund_id puts "#{total.round(2)} #{Client[claim.client_id].client_name} " CSV.open("#{DRIVE}/sunnyside-files/cash_receipts/EDI-citywide-import.csv", "a+") do |row| # #{post_date.gsub(/\//, '-')}- row << [1, payment.check_number, post_date, fund_id, claim.invoice_id, claim.invoice_id, "#{post_date.strftime('%m')}/#{post_date.strftime('%y')}#{prov.abbreviation}", post_date, claim.invoice_id, prov.fund, prov.credit_account,'','','', 0, total] row << [2, payment.check_number, post_date, fund_id, claim.invoice_id, claim.invoice_id, "#{post_date.strftime('%m')}/#{post_date.strftime('%y')}#{prov.abbreviation}", post_date, claim.invoice_id, 100, 1000,'','','', total, 0] row << [3, payment.check_number, post_date, fund_id, claim.invoice_id, claim.invoice_id, "#{post_date.strftime('%m')}/#{post_date.strftime('%y')}#{prov.abbreviation}", post_date, claim.invoice_id, prov.fund, 3990, '', '', '', total, 0] row << [4, payment.check_number, post_date, fund_id, claim.invoice_id, claim.invoice_id, "#{post_date.strftime('%m')}/#{post_date.strftime('%y')}#{prov.abbreviation}", post_date, claim.invoice_id, 100, 3990, '', '', '', 0, total] end end |