문제

우리는 Mac 용 Point of Sale 소프트웨어를 만들고 세금 엔진을 개조하려고합니다. 모든 제품에 개별적으로 적용 할 수있는 이름, 코드 및 요금으로 구성된 세금으로 지금은 매우 간단합니다. 이것은 일부 사람들에게는 충분하지만, 우리는보다 진보 된 상황을 처리하기위한 많은 요청을 받았습니다. 일부 사례는 미국시/카운티 판매 세, 캐나다 화합물 (스택) 세금, 프랑스 ecotax 및 NYC 럭셔리 세가 있습니다.

우리는 이러한 세금이 일종의 규칙 엔진 기반 구현에 기대어있는 대부분의 특성을 확인했습니다. 우리는 모든 사례를 지원할 필요는 없지만 필요한 경우 (다른 재 작성을 피하기 위해) 확장 할 수 있기를 원합니다.

우리는 이전에 이와 같은 것을 구축 한 사람들의 조언이나 우아한 방식으로 같은 방법을 해결하려는 프로젝트의 예를 찾고 있습니다.

도움이 되었습니까?

해결책

데이터베이스 테이블 세트와 조인을 권장합니다.

예시:

  • 관할권: 주, 카운티, 국가, 도시 등의 목록
  • 제품: 분명한
  • 가게: 판매 위치 목록
  • StoreJurisdiction(Storeid, JurisdictionId) : 매장이 세금을 징수 할 책임이있는 관할권 목록
  • ProductTaxCode(ProductId int, Taxcodeid int) : 세금 목적을위한 제품 유형 : 기본, 럭셔리 등
  • 관할 텍스트로 구성되어 있습니다(관할권, taxcodeid, 관심사, RateType) : 적용 할 수있는 각각의 조합에 대해 적용 할 세율과 요율 유형 (복합, 단순 등)을 제공합니다.

신청할 세금 목록을 찾으려면 필요한 것은 내부 조인 상점, 관할 구역, 관할 지역의 관할 구역 및 제품의 세금 코드의 관할 구역.

ProductTaxCode를 뷰로 정의 할 수 있도록 모든 제품이 특별한 제품이 제공되지 않는 한 기본 세금 코드를받을 수 있습니다. Taxcode를 추상화하면 제품에 대한 메타 데이터 (예 : "식품")가 다른 방식으로 다른 지역에 적용 할 수 있습니다. 특정 관할권에 "식품"에 대한 자체 정의가있는 경우 관할 구역 별 코드를 추가하여 필요에 따라 제품에 적용합니다.

이를 위해서는 인터넷 구매, 도매 구매 및 판매가 어떻게 든 세금이 면제되거나 고객이이를 송금 할 책임이있는 기타 상황에 대해 약간의 조정이 필요할 수 있습니다. 또한 매장이 아닌 고객의 위치가 세율을 결정하는 상황에 대해서도 조정해야합니다.

기타 조정 : 예를 들어 텍사스에서는 주 및 지방 세금이 징수되지 않는 "면세"주말이 있습니다. 약간 개별 품목의 판매 가격이 $ 100 미만인 제품 클래스. 아이디어는 새해를 위해 학교로 향하는 어린이들에게 더 저렴한 학용품, 의복 등을 제공하는 것입니다. 이러한 종류의 조정은 각 관할 지역의 날짜 범위 테이블을 계획 할 수있는 한 미래에 출발하여 구현 될 수 있습니다.

다른 팁

내 제안은 데이터베이스 테이블 (값 저장)과 (비즈니스 로직)에 대한 규칙에 대한 데이터베이스 테이블을 사용하는 것입니다. 나는 분명히 세율이나 관할 구역 목록과 같은 것을 규칙에 넣지 않을 것입니다. 규칙 엔진을 사용하는 것은 어떤 트랜잭션에 적용 할 요율을 결정하는 논리를 정의하는 것입니다. 예를 들어, State X에 기반을 둔 회사에서 온라인으로 제품 세트를 구매하면 State Y에서 3 개의 다른 위치로 배송되는 경우 거래의 어느 부분에 적용되는 세율은 무엇입니까? 이 규칙과 데이터베이스 테이블의 조합은 매우 일반적입니다. 규칙은 테이블이보고하는 데 도움이되는 동안 올바른 것을 찾아 보도록해야합니다. 예를 들어, 캘리포니아 DMV는 차량 등록비로이를 수행했습니다. 모든 다양한 요금은 데이터베이스는 규칙베이스에서 관리되는 자동차에 적용되는 수수료를 결정하는 규칙입니다. 모든 것을 규칙으로 시도하고 넣으면 잘보고 할 수 없으며 모든 것을 데이터베이스 테이블에 넣으면 모든 예외와 코너 케이스를 관리하기 위해 수십 개의 테이블로 끝납니다. JT

다음은 Co Metropolitan 지역 덴버에있는 "가정 규칙"도시의 예입니다.

http://www.c3gov.com/pages/about/division_salestax.html

소매 업체로서 귀하는 세금 납부를 다른 위치로 보내야 할 수도 있습니다. "가정 규칙"도시가 아닌 도시 (콜로라도에만 적용되는 특별 용어이지만 아마도 모든 주에서는 똑같이 특별한 용어를 가지고 있음)의 경우, 모든 세금 납부를 주에게 보낼 것입니다. 그런 다음 관련 당사자에게 거래하십시오. 콜로라도에는 특정 혜택에 대한 판매 세를 징수 할 수있는 "특별 세금 지구"가있는 기능이 있습니다 (예시 링크에서 RTD는 대중 교통 지구이며, "Invesco Field"는 덴버 브론 코스가 플레이하는 경기장입니다).

이 스레드에 대한 Tallent 씨의 답변을 확장하려면 관할권 표에 세금이 다른 장소로 갈 수 있음을 나타내는 방법도 포함시켜야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top