Skip to content

Commit

Permalink
feat: 세금계산서 역발행 요청 기능 구현 (#193) (#194)
Browse files Browse the repository at this point in the history
* feat: 장바구니 추가 기능 구현

* feat: 장바구니 조회 기능 구현

* feat: 상품 주문과 식권 사용 기능 구현

* style: 포인트트랜잭션 레포지토리명 변경

* deploy: 재배포

* deploy: 재배포2

* deploy: 로그인 로직 수정에 따른 재배포

* deploy: 로그인 로직 수정에 따른 재배포2

* feat: 식권 사용 기능 구현

* feat: yml 수정 사항 반영

* feat: 식권 사용 로직 수정

* feat: 주문 로직 수정 완료

* fix: 장바구니에 아무것도 없을 때 주문 시 active 되는 현상 수정

* feat: 주문 완료 시 리턴 값 수정

* feat: 내 그룹 조회 기능 구현

* feat: 기본 프로필 이미지 url 추가

* feat: 그룹 멤버 전체 조회 기능 구현

* feat: 1인당 사용 가능 금액 설정 컬럼 추가

* feat: 내 지갑 조회 기능 구현

* feat: 선결제 기능 구현

* feat: 유저 홈 화면 조회 기능 구현

* feat: 그룹 상세 조회 기능 구현

* feat: 가게 상세 조회 쿼리 수정

* deploy: 변경사항 반영을 위한 커밋

* deploy: 수정 사항 반영 재배포

* deploy: rds 교체로 인한 재배포

* deploy: rds 교체로 인한 재배포2

* feat: 홈 화면 소속팀 조회 쿼리 제대로 안되던 현상 해결, 대표이미지 반환 추가

* feat: 그룹 상세 조회 응답 컬럼명 변경

* feat: memberLimit 컬럼 삭제

* feat: 선결제 시 기존 결제 내역과 멱등성 문제 해결

* fix: 팀 상세 조회 시 이미지 쿼리가 의미 없이 join 되던 쿼리 수정

* feat: 가게 검색 기능 대폭 수정

* feat: 프론트 요구사 반영

* feat: searchcondition 삭제

* feat: 팀타입 desription 리턴 하도록 수정

* feat: 카테고리별 팀 조회 시 팀 생성일 컬럼 추가

* feat: 매장찾기_상세 페이지 조회 기능 구현

* feat: 비밀 코드 조회 기능 엔드 포인트 수정

* fix: conflict fix

* hotfix: 서버 복구

* hotfix: 서버 복구2

* feat: Barobill api 연동

* fix: 홈 화면에 같은 데이터가 중복되는 현상 수정

* infra: ElastiCache 연결을 위한 docker-compose 설정

* infra: cicd script 수정

* infra: cicd script ec2 주소 설정

* infra: cicd script 수정2

* infra: cicd script 수정3

* infra: cicd script 수정4

* infra: cicd script 수정5

* infra: cicd script 수정6

* infra: cicd script 수정7

* infra: cicd script 수정7

* infra: cicd script 수정8

* infra: cicd script 수정9

* infra: cicd script 수정10

* infra: cicd script 수정11

* infra: cicd script 수정12

* infra: cicd script 수정13

* infra: cicd script 수정14

* infra: cicd script 수정15

* infra: cicd script 수정16

* infra: cicd script 수정17

* infra: cicd script 수정18

* infra: cicd script 수정19

* infra: cicd script 수정20

* infra: cicd script 수정21

* infra: cicd script 수정22

* fix: 보유금액이 선결제 금액보다 작을 경우 상태값 변경(200->400)

* feat: 홈화면 가게 별 선결제 디데이 추가, 쿼리문 조정

* feat: 주문하기 로직 정상화

* feat: 장바구니에 다른 가게 물건이 있는지 검증 구현

* feat: 장바구니 비우기 기능 구현

* deploy: cd retry

* feat: 매장 상세 페이지 조회 메뉴 정렬 조건 추가

* feat: 세금명세서 역발행 기능 추가

* feat: 거래 타입명 변경

* feat: pointTransaction 금액 음수(-) 표시 추가

* feat: 세금계산서 역발행 요청 기능 구현
  • Loading branch information
LEEJaeHyeok97 authored Dec 3, 2024
1 parent 0006c27 commit 72a9bd9
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.baroservice.ws.ArrayOfTaxInvoiceTradeLineItem;
import com.baroservice.ws.InvoiceParty;
import com.baroservice.ws.TaxInvoice;
import com.baroservice.ws.TaxInvoiceStateEX;
import com.baroservice.ws.TaxInvoiceTradeLineItem;
import com.jangburich.domain.barobill.dto.request.GetCertificateRegistURLRequest;
import com.jangburich.domain.barobill.dto.request.RegistAndReverseIssueTaxInvoiceRequest;
Expand Down Expand Up @@ -48,16 +49,53 @@ public void getCertificateRegistURL(GetCertificateRegistURLRequest getCertificat
}
}

@Transactional
public void procTaxInvoice() {
String certKey = CERT_KEY;
String corpNum = "7542401719";
String mgtKey = "000001-E";
String procType = "CANCEL";
String memo = "test";

int result = barobillApiService.taxInvoice.procTaxInvoice(certKey, corpNum, mgtKey, procType, memo);

if (result < 0) { // 호출 실패
System.out.println(result);
} else { // 호출 성공
System.out.println(result);
}
}

public void getTaxInvoiceStateEX() {
String certKey = CERT_KEY;
String corpNum = "7493500897";
String mgtKey = "000001-R";

TaxInvoiceStateEX result = barobillApiService.taxInvoice.getTaxInvoiceStateEX(certKey, corpNum, mgtKey);

if (result.getBarobillState() < 0) { // 호출 실패
System.out.println(result.getBarobillState());
} else { // 호출 성공
// 필드정보는 레퍼런스를 참고해주세요.
System.out.println(result.getBarobillState());
}
}

@Transactional
public void registAndReverseIssueTaxInvoice(
RegistAndReverseIssueTaxInvoiceRequest registAndReverseIssueTaxInvoiceRequest) {
// 공급자, 공급받는자의 관리번호 채번
String invoicerMgtNum = "000001-R";
String invoiceeMgtNum = "000001-E";
// String invoicerMgtNum = "000003-R";
// String invoiceeMgtNum = "000003-E";

String invoicerMgtNum = registAndReverseIssueTaxInvoiceRequest.invoicerMgtNum();
String invoiceeMgtNum = registAndReverseIssueTaxInvoiceRequest.invoiceeMgtNum();

// 공급자, 공급받는자의 바로빌 아이디 불러오기
String invoicerBarobillID = registAndReverseIssueTaxInvoiceRequest.invoicerBarobillID();
String invoiceeBarobillID = registAndReverseIssueTaxInvoiceRequest.invoiceeBarobillID();
// String invoicerBarobillID = registAndReverseIssueTaxInvoiceRequest.invoicerBarobillID();
// String invoiceeBarobillID = registAndReverseIssueTaxInvoiceRequest.invoiceeBarobillID();
String invoicerBarobillID = "parisbutchershop";
String invoiceeBarobillID = "tkddn0518";

// 세금계산서 내용을 담은 클래스(또는 구조체) 생성
TaxInvoice taxInvoice = new TaxInvoice();
Expand All @@ -72,7 +110,7 @@ public void registAndReverseIssueTaxInvoice(
taxInvoice.setTaxCalcType(1);
taxInvoice.setPurposeType(1);

taxInvoice.setWriteDate("20241129");
taxInvoice.setWriteDate("20241202");

taxInvoice.setAmountTotal("100");
taxInvoice.setTaxTotal("100");
Expand All @@ -97,34 +135,34 @@ public void registAndReverseIssueTaxInvoice(
// 공급자 정보
taxInvoice.setInvoicerParty(new InvoiceParty());
taxInvoice.getInvoicerParty().setMgtNum(invoicerMgtNum);
taxInvoice.getInvoicerParty().setCorpNum("");
taxInvoice.getInvoicerParty().setCorpNum("7493500897");
taxInvoice.getInvoicerParty().setTaxRegID("");
taxInvoice.getInvoicerParty().setCorpName("partisbutchershop");
taxInvoice.getInvoicerParty().setCEOName("");
taxInvoice.getInvoicerParty().setAddr("");
taxInvoice.getInvoicerParty().setCorpName("parisbutchershop");
taxInvoice.getInvoicerParty().setCEOName("윤원자");
taxInvoice.getInvoicerParty().setAddr("대구광역시 달서구 달구벌대로344길 23");
taxInvoice.getInvoicerParty().setBizType("한식");
taxInvoice.getInvoicerParty().setBizClass("음식점업");
taxInvoice.getInvoicerParty().setContactID(invoicerBarobillID);
taxInvoice.getInvoicerParty().setContactName("");
taxInvoice.getInvoicerParty().setContactName("빠리정육점");
taxInvoice.getInvoicerParty().setTEL("");
taxInvoice.getInvoicerParty().setHP("");
taxInvoice.getInvoicerParty().setEmail("");
taxInvoice.getInvoicerParty().setEmail("[email protected]");

//공급받는자 정보
taxInvoice.setInvoiceeParty(new InvoiceParty());
taxInvoice.getInvoiceeParty().setMgtNum(invoiceeMgtNum);
taxInvoice.getInvoiceeParty().setCorpNum("");
taxInvoice.getInvoiceeParty().setCorpNum("7542401719");
taxInvoice.getInvoiceeParty().setTaxRegID("");
taxInvoice.getInvoiceeParty().setCorpName("Jangburich");
taxInvoice.getInvoiceeParty().setCEOName("");
taxInvoice.getInvoiceeParty().setAddr("");
taxInvoice.getInvoiceeParty().setBizType("");
taxInvoice.getInvoiceeParty().setBizClass("");
taxInvoice.getInvoiceeParty().setCEOName("변상우");
taxInvoice.getInvoiceeParty().setAddr("충북 청주시 상당구 중앙로 80 (북문로3가, 청주행정타운 코아루휴티스)");
taxInvoice.getInvoiceeParty().setBizType("응용 소프트웨어 개발 및 공급업");
taxInvoice.getInvoiceeParty().setBizClass("정보통신업");
taxInvoice.getInvoiceeParty().setContactID(invoiceeBarobillID);
taxInvoice.getInvoiceeParty().setContactName("");
taxInvoice.getInvoiceeParty().setContactName("하이볼리");
taxInvoice.getInvoiceeParty().setTEL("");
taxInvoice.getInvoiceeParty().setHP("");
taxInvoice.getInvoiceeParty().setEmail("");
taxInvoice.getInvoiceeParty().setEmail("[email protected]");

// 수탁자 정보
taxInvoice.setBrokerParty(new InvoiceParty());
Expand Down Expand Up @@ -156,7 +194,7 @@ public void registAndReverseIssueTaxInvoice(

taxInvoice.getTaxInvoiceTradeLineItems().getTaxInvoiceTradeLineItem().add(taxInvoiceTradeLineItem);

int result = barobillApiService.taxInvoice.registAndReverseIssueTaxInvoice(CERT_KEY, "", taxInvoice,
int result = barobillApiService.taxInvoice.registAndReverseIssueTaxInvoice(CERT_KEY, taxInvoice.getInvoiceeParty().getCorpNum(), taxInvoice,
false,
false, "");

Expand All @@ -169,4 +207,18 @@ public void registAndReverseIssueTaxInvoice(
System.out.println("성공");
}
}

public void deleteTaxInvoice() {
String certKey = CERT_KEY;
String corpNum = "7493500897";
String mgtKey = "000001-R";

int result = barobillApiService.taxInvoice.deleteTaxInvoice(certKey, corpNum, mgtKey);

if (result < 0) { // 호출 실패
System.out.println(result);
} else { // 호출 성공
System.out.println(result);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.jangburich.domain.barobill.dto.request;

public record RegistAndReverseIssueTaxInvoiceRequest(
String invoicerBarobillID,
String invoiceeBarobillID
String invoicerMgtNum,
String invoiceeMgtNum
) {

}
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.jangburich.domain.barobill.presentation;

import com.jangburich.domain.barobill.application.BarobillService;
import com.jangburich.domain.barobill.dto.request.GetCertificateRegistURLRequest;
import com.jangburich.domain.barobill.dto.request.RegistAndReverseIssueTaxInvoiceRequest;
import com.jangburich.domain.barobill.dto.request.RegistCorpRequest;
import com.jangburich.global.payload.Message;
import com.jangburich.global.payload.ResponseCustom;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
Expand All @@ -21,6 +22,7 @@ public class BarobillController {

private final BarobillService barobillService;

@Operation(summary = "바로빌 가입 및 회원사 등록", description = "소상공인의 사업자로 바로빌 회원가입 + 장부리치의 회원사로 등록합니다.")
@PostMapping
public ResponseCustom<Message> registCorp(
@RequestBody RegistCorpRequest registCorpRequest
Expand All @@ -29,19 +31,31 @@ public ResponseCustom<Message> registCorp(
return ResponseCustom.OK(Message.builder().message("success").build());
}

@PostMapping("/registCertificate")
public ResponseCustom<Message> getCertificateRegistURL(
@RequestBody GetCertificateRegistURLRequest getCertificateRegistURLRequest
) {
barobillService.getCertificateRegistURL(getCertificateRegistURLRequest);
@Operation(summary = "세금계산서 역발행 요청", description = "세금 계산서를 소상공인이 역발행 요청합니다.")
@PostMapping("/registAndReverseIssueTaxInvoice")
public ResponseCustom<Message> registAndReverseIssueTaxInvoice(@RequestBody RegistAndReverseIssueTaxInvoiceRequest registAndReverseIssueTaxInvoiceRequest) {
barobillService.registAndReverseIssueTaxInvoice(registAndReverseIssueTaxInvoiceRequest);
return ResponseCustom.OK(Message.builder().message("success").build());
}

@PostMapping("/registAndReverseIssueTaxInvoice")
public ResponseCustom<Message> registAndReverseIssueTaxInvoice(
@RequestBody RegistAndReverseIssueTaxInvoiceRequest registAndReverseIssueTaxInvoiceRequest
) {
barobillService.registAndReverseIssueTaxInvoice(registAndReverseIssueTaxInvoiceRequest);
@Operation(summary = "세금계산서 역발행 취소", description = "세금 계산서 역발행 취소(test)")
@PostMapping("/cancel")
public ResponseCustom<Message> cancel() {
barobillService.procTaxInvoice();
return ResponseCustom.OK(Message.builder().message("success").build());
}

@Operation(summary = "세금계산서 상태조회", description = "세금계산서 상태를 조회합니다.")
@GetMapping("/testget")
public ResponseCustom<Message> get() {
barobillService.getTaxInvoiceStateEX();
return ResponseCustom.OK(Message.builder().message("success").build());
}

@Operation(summary = "세금계산서 삭제", description = "세금계산서를 삭제합니다.")
@PostMapping("/delete")
public ResponseCustom<Message> delete() {
barobillService.deleteTaxInvoice();
return ResponseCustom.OK(Message.builder().message("success").build());
}
}

0 comments on commit 72a9bd9

Please sign in to comment.