0

테이블 Invoice 및 InvoiceItem이 있으며 직접 지불을 처리합니다. 고객은 다른 통화로 지불 할 수 있지만 내가 판매하는 서비스의 가격은 유로와 같은 단일 통화입니다. 적어도 지금은. 내 질문은 :직접 및 인보이스로 지불을 처리 할 때 다른 통화의 가격 처리

A) 내가 지불이 currency_id 필드

B로 만들어졌다) 또는 내가 currency_id을 유지해야하는 통화로 내가 정보를 저장하는 것 하나 개 이상의 테이블, InvoicePayments을 만들어야합니다 인보이스 란? 경우

나는 InvoicePayments의 새로운 기록을 그들은 내가 #B 경우 송장

에 하나의 기록을 유지하면서 지불하고자하는 클라이언트가 통화에 대한 자신의 마음을 변경 때마다 생성 할 것 #A 클라이언트가 지불하고자하는 통화에 대해 마음을 바꿀 때마다 Invoice에서 새로운 레코드를 생성합니다.

어느 것이 더 낫습니까? 내게있어 그들은 거의 동일하다. 하지만 .... 내가 아직 모르는 뭔가가있을 수 있습니다.

"필요한 것이 무엇이냐에 달려 있습니다"라는 구절을 말하지 마십시오. 모든 것은 내가 필요한 것에 달려 있습니다.

+0

'Invoices'를 참조 통화 (유로)로 유지하면 최대의 유연성을 얻을 수 있으며, 'InvoicePayments' 거래가 통화 환율로 처리되고 실제 * 지불 * 세부 사항을 갖게됩니다. 또한 필요에 따라 인보이스를 다른 결제로 분할 할 수도 있습니다. – joanolo

+0

@joanolo, 감사합니다. – Kotaa

답변

0

먼저 을 구입하는 대신 회계 소프트웨어를 구입하는 방법이 있다면 그렇게하십시오. 내 첫 전문 프로그래밍 작업은 국제 회계와 관련된 응용 프로그램을 프로그래밍하는 것이 었습니다. 그것은 마음이 마비입니다. 부통령들 사이에서 외환 환율 적용 방법에 관한 실제적인 주먹 싸움을 보았습니다.

빌드해야하는 경우 인보이스의 전부 또는 일부를 지불하는 통화뿐만 아니라 해당 지불에 적용되는 환율 또는 유효 가치도 저장해야합니다. 환율이나 유효 가치는 일상적인 사용자가 업데이트 할 수 없습니다.

환율은 시간에 따라 다릅니다. 따라서 이와 같은 결제 행은 2016 년 10 월 3 일 100 EUR 인보이스가 전체 결제되었는지 여부를 알려주지 않습니다.

 
invoice pmt_date pmt_currency pmt_amount 
-- 
10132 2016-10-03 USD   89.00 

오늘 환율은 1 EUR = 1.0681 USD입니다. 2016 년 10 월 3 일의 환율은 1 유로 = 1.1236 달러였습니다. 이 다음 테이블 중 하나는 그런 종류의 사실을 저장할 수 있습니다.

 
invoice pmt_date pmt_currency pmt_amount exchange_rate 
-- 
10132 2016-10-03 USD   89.00  1.1236 
 
invoice pmt_date pmt_currency pmt_amount pmt_amount_eur 
-- 
10132 2016-10-03 USD   89.00  100.00 

규칙은 대한 각 지불이 응용 프로그램에 따라 다릅니다에 속도가 적용 교환한다.

+0

테이블의 환율로 어떤 통화가 더 비쌉니까? '1 EUR = 1.1236 USD' 또는'1 USD = 1.1236 EUR'입니까? – Kotaa