I+= là gì c++

CI là gì? CI là viết tắt của Commericial Invoice – Hóa đơn thương mại, là một chứng từ quan trọng trong ngoại thương, và cũng quan trọng không kém trong bộ hồ sơ hải quan.

Trong quá trình làm thủ tục, tôi thấy thấy nhiều khách hàng làm chứng từ rất sơ sài, nhiều khi số liệu vênh váo với các chứng từ khác. Thậm chí cá biệt còn có khách hàng không biết cách soạn Hóa đơn thế nào cho hợp lệ.

Với những ai chưa quen làm chứng từ này, tốt nhất là chọn một file mẫu hóa đơn thương mại, để tham khảo, rồi dựa vào đó mà làm cho nhanh.

Nội dung chính

I+= là gì c++

Như bạn thấy trong hình trên, về cơ bản hóa đơn sẽ gồm những nội dung chính sau:

  • Số & ngày lập hóa đơn
  • Tên, địa chỉ người bán & người mua
  • Thông tin hàng hóa: mô tả, số lượng, đơn giá, số tiền
  • Điều kiện cơ sở giao hàng
  • Điều kiện thanh toán
  • Cảng xếp, dỡ
  • Tên tàu, số chuyến…

Mục đích của hóa đơn thương mại

Thực ra, một trong những mục đích chính của hóa đơn thương mại là để làm chứng từ thanh toán: người bán đòi tiền người mua. Nghĩa là tôi bán cho anh lô hàng này, anh phải trả tôi số tiền trên hóa đơn.

Do đó, phải thể hiện được thông tin này trên Invoice: số tiền cần thanh toán, kèm theo những nội dung khác về hàng hóa, số lượng, điều kiện thanh toán…

Với một số bạn chưa quen đọc chứng từ, cần phân biệt một chút giữa Hóa đơn thương mại (Commercial Invoice) với Chi tiết đóng gói, hay Phiếu đóng gói (Packing List). Hai loại chứng từ này nhiều khi nhìn gần giống nhau, và có nhiều thông tin trùng nhau, nhưng có chức năng khác nhau nên cần những dữ liệu đặc thù riêng.

Hóa đơn là chứng từ thiên về chức năng thanh toán, trên đó quan trọng thể hiện hàng hóa bao nhiêu tiền. Còn phiếu đóng gói lại cần thể hiện hàng hóa được đóng gói như thế nào, bao nhiêu kiện, trọng lượng và thể tích bao nhiêu…

Nội dung theo yêu cầu UCP 600

Với lô hàng được thanh toán theo phương thức tín dụng chứng từ (L/C), nội dung của Invoice phải đảm bảo những yêu cầu của UCP 600. Tôi xin được trích nội dung trong đề tài có tên Luận văn về hóa đơn thương mại của Trường ĐH Mở Tp.HCM:

  • Người lập hóa đơn phải là người bán ( nếu sử dụng phương thức nhờ thu, chuyển tiền,…), thể hiện là người hưởng thụ ghi trên L/C nếu như sử dụng phương thức tín dụng chứng từ.
  • Được lập cho người mua hoặc là người mở thư tín dụng.
  • Hóa đơn ghi đúng tên người bán, người mua ghi trong hợp đồng hoặc trong L/C.
  • Hóa đơn thương mại không cần phải ký, nếu hóa đơn có chữ ký thì phải được quy định rõ trong L/C.
  • Việc mô tả hàng hóa, dịch vụ hay các giao dịch khác trong hóa đơn phải phù hợp với mô tả hàng hóa trong L/C hoặc trong hợp đồng về số lượng, ký hiệu, giá cả, quy cách, chủng loại.
  • Nếu trong L/C đề cập đến giấy phép nhập khẩu, đơn đặt hàng của người mua và những chú ý khác thì những chi tiết này phải ghi trong hóa đơn.
  • Các chi tiết của hóa đơn không mâu thuẫn với các chứng từ khác.

Nếu hàng hóa của bạn không thanh toán bằng L/C, thì tất nhiên không bắt buộc phải áp dụng những yêu cầu trên.

Tuy vậy, những yêu cầu của UCP mang tính quốc tế, khá hữu ích để tham khảo trong quá trình soạn thảo Invoice. Nếu áp dụng theo một cách hợp lý, bạn có thể tránh được việc bị khách hàng nước ngoài yêu cầu sửa đổi (nếu xuất hàng), hoặc yêu cầu người bán nước ngoài bổ sung chỉnh sửa nội dung cho đầy đủ, hợp lệ (với hàng nhập khẩu vào Việt Nam).

Nội dung Hóa đơn thương mại chuẩn chỉnh cũng giúp ích cho việc làm thủ tục hải quan gặp nhiều thuận lợi và nhanh chóng, tránh phải bổ sung chỉnh sửa chứng từ.

Một số lỗi phổ biến cần tránh:

Trong quá trình làm dịch vụ hải quan, nhiều công ty làm Invoice hay bị sai sót một số nội dung quan trọng. Những lỗi này thường bị hải quan bắt lỗi, gây ảnh hưởng đến quá trình thông quan hàng hóa:

  • Hóa đơn không thể hiện điều kiên giao hàng như FOB (kèm tên cảng xuất), hay CIF (kèm tên cảng nhập).
  • Người xuất khẩu bán hàng theo giá giao hàng (giá CIF chẳng hạn) nhưng chỉ ghi hóa đơn theo giá FOB tại nơi xếp hàng, và cũng không ghi những chi phí tiếp theo sau.
  • Người giao hàng nước ngoài bán hàng có chiết khấu nhưng trên hóa đơn chỉ ghi giá thực thu mà không thể hiện số tiền chiết khấu.
  • Mô tả hàng hóa không rõ ràng, thiếu một số thông tin yêu cầu, gộp nhiều mặt hàng vào cùng một loại v.v…

Tham khảo thêm:

    • Tạo Commercial Invoice trực tuyến tại commercialinvoiceform.org

Theo ContTrans

Published: 2018-06-22 20:20:20

Mình nhớ hồi phỏng vấn vào cty, có một bài test code về vòng lặp, cái for nào mình cũng xài ++i. Sếp thắc mắc 2 3 lần sao không dùng i++ nhưng mình cứ vòng vo là "it's faster but I forgot the reason". May sao lão sếp hình như cũng chả biết câu trả lời nên tự ái mà cho mình pass 😂. Cơ mà mãi đến bây giờ ngồi hồi tưởng lại mà mình cũng chưa nhớ ra cái nguyên nhân đó, nên tối về hỏi lại gugo-sama ngay và viết bài này.

Điểm khác biệt

Khác biệt cơ bản này áp dụng cho hầu hết các ngôn ngữ và compiler hiện nay.

int a=0, b=0; a++; // a = 1 ++b; // b = 1 b = ++a; // b = a = 2 a = b++; // a = 2, b = 3

++i tăng giá trị của i lên 1 và trả về giá trị mới đó.
i++ cũng tương tự nhưng giá trị trả về là giá trị ban đầu của i trước khi được tăng lên 1.

Một điểm đáng lưu ý ở đây, không nên nhầm lẫn là i++ sẽ trả về giá trị i cho phép gán trước khi nó được tăng lên. Phép gán luôn thực hiện sau cùng, nên điều đó là không thể nhé.

Về bản chất chương trình sẽ tạo ra một biến tạm (temp) để lưu giá trị ban đầu của i và trả về giá trị đó cho phép gán sau khi phép toán i++ thực hiện xong.

int MePlusPlus(int& me) { int temp = me; me = me + 1; return temp; }

Performance

Tuy phải tốn công tạo một biến temp cho i++ nhưng thực tế sự khác biệt về performance là không lớn. Hầu như tất cả compiler hiện đại sẽ optimize phép toán đó. Bằng chứng là trong ví dụ này trên stackoverflow, gcc cho kết quả biên dịch là như nhau cho hai file code chứa vòng lặp xài ++i và i++.

Nhưng riêng với C++, sự chênh lệch có thể là đáng kể trong một số trường hợp. Cụ thể là với user-defined type, tức là class bạn tạo ra, vì operator++() là một hàm và compiler không biết làm cách nào để optimize việc tạo ra cái temp object trong đó cả. Sao nó biết được bạn define cái gì và sẽ bự cỡ nào trong class.

Vậy nên xài cái nào trong vòng for?

Riêng đối với mình thì ++i đã trở thành một convention bất thành văn rồi. Dù chiến project nào mình cũng xài nó mà chả quan tâm performance gì cho mệt óc. Rất nhiều guru trong giới coder đều đưa ra lời khuyên:

In any case, follow the guideline "prefer ++i over i++" and you won't go wrong

(from many Khuyết Danh)

Một chút về side effect và undefined behavior

Ví dụ 1:

int add(int x, int y) { return x + y; } int main() { int x = 5; // tùy thuộc vào thứ tự evaluate các param của conmpiler // mà phép cộng này có thể là 5+6 hoặc 6+6 int value = add(x, ++x); std::cout << value; // 11 or 12? return 0; }

Ví dụ 2:

int main() { int arr[3] = {0, 1, 2}; int i = 0; arr[i++] = ++i; int x = ++i + ++i; std::cout << arr[i] << endl; std::cout << x; return 0; }

Mình sẽ không giải thích "Side effect hay UB là gì?" ở đây. Topic này cũng khá thú vị nên mình sẽ viết riêng một bài về nó. Nhưng qua hai ví dụ trên chắc bạn cũng thấy được sự nguy hiểm của chúng, nếu phép gán thứ nhất ở ví dụ 2 mà trong vòng lặp nữa thì 😨.

Hẹn gặp các bạn ở những bài viết sau!