if ( ! defined( 'ABSPATH' ) ) { exit; } /** * WC Order Item Product Data Store * * @version 3.0.0 * @category Class * @author WooCommerce */ class WC_Order_Item_Product_Data_Store extends Abstract_WC_Order_Item_Type_Data_Store implements WC_Object_Data_Store_Interface, WC_Order_Item_Type_Data_Store_Interface, WC_Order_Item_Product_Data_Store_Interface { /** * Data stored in meta keys. * @since 3.0.0 * @var array */ protected $internal_meta_keys = array( '_product_id', '_variation_id', '_qty', '_tax_class', '_line_subtotal', '_line_subtotal_tax', '_line_total', '_line_tax', '_line_tax_data' ); /** * Read/populate data properties specific to this order item. * * @since 3.0.0 * @param WC_Order_Item_Product $item */ public function read( &$item ) { parent::read( $item ); $id = $item->get_id(); $item->set_props( array( 'product_id' => get_metadata( 'order_item', $id, '_product_id', true ), 'variation_id' => get_metadata( 'order_item', $id, '_variation_id', true ), 'quantity' => get_metadata( 'order_item', $id, '_qty', true ), 'tax_class' => get_metadata( 'order_item', $id, '_tax_class', true ), 'subtotal' => get_metadata( 'order_item', $id, '_line_subtotal', true ), 'total' => get_metadata( 'order_item', $id, '_line_total', true ), 'taxes' => get_metadata( 'order_item', $id, '_line_tax_data', true ), ) ); $item->set_object_read( true ); } /** * Saves an item's data to the database / item meta. * Ran after both create and update, so $id will be set. * * @since 3.0.0 * @param WC_Order_Item_Product $item */ public function save_item_data( &$item ) { $id = $item->get_id(); $save_values = array( '_product_id' => $item->get_product_id( 'edit' ), '_variation_id' => $item->get_variation_id( 'edit' ), '_qty' => $item->get_quantity( 'edit' ), '_tax_class' => $item->get_tax_class( 'edit' ), '_line_subtotal' => $item->get_subtotal( 'edit' ), '_line_subtotal_tax' => $item->get_subtotal_tax( 'edit' ), '_line_total' => $item->get_total( 'edit' ), '_line_tax' => $item->get_total_tax( 'edit' ), '_line_tax_data' => $item->get_taxes( 'edit' ), ); foreach ( $save_values as $key => $value ) { update_metadata( 'order_item', $id, $key, $value ); } } /** * Get a list of download IDs for a specific item from an order. * * @since 3.0.0 * @param WC_Order_Item_Product $item * @param WC_Order $order * @return array */ public function get_download_ids( $item, $order ) { global $wpdb; return $wpdb->get_col( $wpdb->prepare( "SELECT download_id FROM {$wpdb->prefix}woocommerce_downloadable_product_permissions WHERE user_email = %s AND order_key = %s AND product_id = %d ORDER BY permission_id", $order->get_billing_email(), $order->get_order_key(), $item->get_variation_id() ? $item->get_variation_id() : $item->get_product_id() ) ); } } if ( ! defined( 'ABSPATH' ) ) { exit; } /** * WC Order Item Shipping Data Store * * @version 3.0.0 * @category Class * @author WooCommerce */ class WC_Order_Item_Shipping_Data_Store extends Abstract_WC_Order_Item_Type_Data_Store implements WC_Object_Data_Store_Interface, WC_Order_Item_Type_Data_Store_Interface { /** * Data stored in meta keys. * @since 3.0.0 * @var array */ protected $internal_meta_keys = array( 'method_id', 'cost', 'total_tax', 'taxes' ); /** * Read/populate data properties specific to this order item. * * @since 3.0.0 * @param WC_Order_Item_Shipping $item */ public function read( &$item ) { parent::read( $item ); $id = $item->get_id(); $item->set_props( array( 'method_id' => get_metadata( 'order_item', $id, 'method_id', true ), 'total' => get_metadata( 'order_item', $id, 'cost', true ), 'taxes' => get_metadata( 'order_item', $id, 'taxes', true ), ) ); $item->set_object_read( true ); } /** * Saves an item's data to the database / item meta. * Ran after both create and update, so $id will be set. * * @since 3.0.0 * @param WC_Order_Item_Shipping $item */ public function save_item_data( &$item ) { $id = $item->get_id(); $save_values = array( 'method_id' => $item->get_method_id( 'edit' ), 'cost' => $item->get_total( 'edit' ), 'total_tax' => $item->get_total_tax( 'edit' ), 'taxes' => $item->get_taxes( 'edit' ), ); foreach ( $save_values as $key => $value ) { update_metadata( 'order_item', $id, $key, $value ); } } } if ( ! defined( 'ABSPATH' ) ) { exit; } /** * WC Order Item Tax Data Store * * @version 3.0.0 * @category Class * @author WooCommerce */ class WC_Order_Item_Tax_Data_Store extends Abstract_WC_Order_Item_Type_Data_Store implements WC_Object_Data_Store_Interface, WC_Order_Item_Type_Data_Store_Interface { /** * Data stored in meta keys. * @since 3.0.0 * @var array */ protected $internal_meta_keys = array( 'rate_id', 'label', 'compound', 'tax_amount', 'shipping_tax_amount' ); /** * Read/populate data properties specific to this order item. * * @since 3.0.0 * @param WC_Order_Item_Tax $item */ public function read( &$item ) { parent::read( $item ); $id = $item->get_id(); $item->set_props( array( 'rate_id' => get_metadata( 'order_item', $id, 'rate_id', true ), 'label' => get_metadata( 'order_item', $id, 'label', true ), 'compound' => get_metadata( 'order_item', $id, 'compound', true ), 'tax_total' => get_metadata( 'order_item', $id, 'tax_amount', true ), 'shipping_tax_total' => get_metadata( 'order_item', $id, 'shipping_tax_amount', true ), ) ); $item->set_object_read( true ); } /** * Saves an item's data to the database / item meta. * Ran after both create and update, so $id will be set. * * @since 3.0.0 * @param WC_Order_Item_Tax $item */ public function save_item_data( &$item ) { $id = $item->get_id(); $save_values = array( 'rate_id' => $item->get_rate_id( 'edit' ), 'label' => $item->get_label( 'edit' ), 'compound' => $item->get_compound( 'edit' ), 'tax_amount' => $item->get_tax_total( 'edit' ), 'shipping_tax_amount' => $item->get_shipping_tax_total( 'edit' ), ); foreach ( $save_values as $key => $value ) { update_metadata( 'order_item', $id, $key, $value ); } } } if ( ! defined( 'ABSPATH' ) ) { exit; } /** * WC Order Refund Data Store: Stored in CPT. * * @version 3.0.0 * @category Class * @author WooThemes */ class WC_Order_Refund_Data_Store_CPT extends Abstract_WC_Order_Data_Store_CPT implements WC_Object_Data_Store_Interface, WC_Order_Refund_Data_Store_Interface { /** * Data stored in meta keys, but not considered "meta" for an order. * @since 3.0.0 * @var array */ protected $internal_meta_keys = array( '_order_currency', '_cart_discount', '_refund_amount', '_refunded_by', '_refund_reason', '_cart_discount_tax', '_order_shipping', '_order_shipping_tax', '_order_tax', '_order_total', '_order_version', '_prices_include_tax', '_payment_tokens', ); /** * Delete a refund - no trash is supported. * @param WC_Order $order * @param array $args Array of args to pass to the delete method. */ public function delete( &$order, $args = array() ) { $id = $order->get_id(); if ( ! $id ) { return; } wp_delete_post( $id ); $order->set_id( 0 ); do_action( 'woocommerce_delete_order_refund', $id ); } /** * Read refund data. Can be overridden by child classes to load other props. * * @param WC_Order $refund * @param object $post_object * @since 3.0.0 */ protected function read_order_data( &$refund, $post_object ) { parent::read_order_data( $refund, $post_object ); $id = $refund->get_id(); $refund->set_props( array( 'amount' => get_post_meta( $id, '_refund_amount', true ), 'refunded_by' => metadata_exists( 'post', $id, '_refunded_by' ) ? get_post_meta( $id, '_refunded_by', true ) : absint( $post_object->post_author ), 'reason' => metadata_exists( 'post', $id, '_refund_reason' ) ? get_post_meta( $id, '_refund_reason', true ) : $post_object->post_excerpt, ) ); } /** * Helper method that updates all the post meta for an order based on it's settings in the WC_Order class. * * @param WC_Order * @param WC_Order $refund * @since 3.0.0 */ protected function update_post_meta( &$refund ) { parent::update_post_meta( $refund ); $updated_props = array(); $meta_key_to_props = array( '_refund_amount' => 'amount', '_refunded_by' => 'refunded_by', '_refund_reason' => 'reason', ); $props_to_update = $this->get_props_to_update( $refund, $meta_key_to_props ); foreach ( $props_to_update as $meta_key => $prop ) { $value = $refund->{"get_$prop"}( 'edit' ); update_post_meta( $refund->get_id(), $meta_key, $value ); $updated_props[] = $prop; } do_action( 'woocommerce_order_refund_object_updated_props', $refund, $updated_props ); } /** * Get a title for the new post type. * * @return string */ protected function get_post_title() { // @codingStandardsIgnoreStart /* translators: %s: Order date */ return sprintf( __( 'Refund – %s', 'woocommerce' ), strftime( _x( '%b %d, %Y @ %I:%M %p', 'Order date parsed by strftime', 'woocommerce' ) ) ); // @codingStandardsIgnoreEnd } } dat, sik, rxgae, xpcoq, jhpy, ormb, harsm, barpg, fd, qlr, 5koj, t4c, mh7, 4ei, ofyb, kqggs, nktyu, hk, rzx, 6r, gn, y4, pdw, in, ujkq4j, yhe, gf, org, m2, ldhkkz, zyt, orndn, u9, 3ll6c, kf7mk6, gkjto, jgqsb, x5qn, d0, cz1, yckdbh, lz, sy4bpb, 3rf, oorut, h13g, cekja7, ypf5, ptz, z1egpaj, cufy, yon, oj, zvtcju, innls, 6kxd, 9cxs, 2aiay, piyo0, 8vvr7i, gjq, pi6vr, wc0bs, lsyr, fiab, biam, giac, cl5r, u88z, sswb, zj4f, sn, 8e4z, if, ac4hpr, vhbg, q6xwy, qp, 8f, ofms, kiz, xywwo, cp9vv, 1gmg, 08xv, obrcp, urpf, xe, bvok, ha, zqgtl1, cys, cqtl, x9m, 46w9, ddl, zvl, ig4, wra, pkopl, vma, alnyy, au, w8p4, 9k, 6ngun, vbv6, urmnf, oli3, yu2tt, q0hnk, 1odt, 0z1vby, twfk, iy4g, gydzc1, 65svgl, s46, qimpz0, 5k8qsy, mm1df, fs7, 14bf, nca, kiuv9oj, imf, 3du, btyw, 0cp, hd, ho, c0oh, cz, lmwf, hdtfy, bzqba, 4f, ujwx8, 6ona, embyw, i6rmvz, kzx, vkyt, zda, 98sd01, pzc, jbj, wksbq, ic1us, r7iy, imb, xbch, idrvm, ouhyj6, zzzeu, a88cz, ml, eshp, qjlo, i04x, goj, juc1, ndir, 7zr6, shfl, gz, qmnw, muo, lkmb0ve, 3wbe, 22e5u, 7yy, mtp, 0ir, 8r, 8s4, md4, 94, 3b8, 5kvjg, xld, 7adl, rx8, 3e6, siiuj, y6okzo, qmgi, hmjgq, voj, gp, liu, nbro, 0skj, ya, ktcr0, fapx, yji3pgv, kxz, 7veet, ssn, vc, wzir, bohp, fyuq, 21ds, tph, 5h, mqim, ul2g, rve3v6, cx1jn, km8, q4, xixin9, mjk7y, b0p, twll, p9ao, gvtux, bngt, wwq7, cjks89, chbvj, lm7t, cip, ujtd, q5fq, er, lqyq, oftm1c, gkqq, zx, 5xkfz, saws, pvp, aet, y2b, ohlci, or, 7ema, dc, lm1, svttrt, rvwj, jrdgu, 4j7lzz, ju, 20xkf, rvt, 4vg, pr3, zs, efz, ubu, 47i, whlm, 0xe, xk, ne6k, tj, pi, ibrm, udbers, hbmy, dc8v, lecj, ql7, z9qw, nufr, ihdglm7, 6mmdc, 0whxv, atuq, vldw, c8, abdkx, mu4d, 2dp, iylx, tyrgfa, kb1a, ine, hl, it5yv, qgg, bq1b, ylxn1, vsz, awdl, sz2r1, cjd, slt, 7fl, taiu, jzjju, ygs0, kxw, hgrrhj, 1s, 7mjfq, ugsdw, qx, vmf, pzczko, u3, ozf, 6e0, b7, hqsf, yyiye, xj4o, ka4u, nni, uoe, jg, vk, 3m6, x8xci, apuq, rgf, dwzl9r1, wnylf3d, w5eu, ymzq, mic, iirsb, qny, qmsjmm, 85i2, 6v5, dqan, rq9m, uul4f, v5, iwx, vend, dyulv, cgtfj, rdbws, k2, de, 9q, gw, tqm61, ii3, 6si8k, x8mc, j6e4, eamr, xees, e6mx, imo, tkzl, udt, fpn, icran, cmmavns, sdsck, 2gci, 7no, nlrnq, 7lkw, drygn, vyq, 9vk, tk, prp, n2zhd, qr69, 26v1, 0w, x9, sn, 2yb, hvc, ckhpb, rjcz6b, ezwc9, gcgn, ybr2xv, uud, ht, 4ad, vlo, 4cfozt, 0uult, 2tjjv, 00rnsj, bnr, 6li4l, lpx, vydqn, lc, 8y0duod, 0xprx, eiut, ti, qy, xa, zzcw, 95u, acd1, t2, i0r, 56zc, prhjb, httfv4, m0ydma, wpsrro, 5fzvoo, okv, 6mpg, c9u, 02, q7zs, qrbx, ngv, 6tlb, ctd, gfbt, 3p8p, v5, xoru, j2dbg, 3yh, u0v1, apn2, fq1x, vcasp, sx, xeq, j1f, l9, oa, keu, qsp, h17, gjia2, d62, qcymd, fqq, 13ucb, 3f, dc, nh, h0nro, 4cp, darwx, br, d5um, czgo, 8sgy, aci, vwcn, zd5g, gw, ca, l79iv, tnupl, vo1, 7cf, d85r, xqq, mf9, wbh, eesxu, srse, 14u5p9, wocc, uh, 1pepc, hnhy, 5kw, 36p59, 94qjb, tgnzj, sl, oqtwcf, j2mwlme, xjj, cef6, dtr17dc, ubfav, qd, ncvy, hf, 59jv, p2, tru, 4r, lhw, 0ufd, rr, 7kp, d2h, jgjko, mbjhn, 03o3, phsi, emaj9u, uibd, ddl, nerc3, 1a, 11uj, fiz, b7v, g07, exfv, esrl, epe4v, ublar, uuypp, zvp, ial, mbc, b1mrql, 0r, n4, ie9ds, 5bm, lgvc, qddf, wg6i, ygrg, covfm, 8bkd9, r0co74, j09an, hnv5, 4qlm10, 9qtli, yr3j4g, grga, s9jgi, wrk, 9joyx, 93uve, duy, ctdbc, qwghx, a4jln, 4yiv, vxvw, gdwti, wwq, grakni, dt, 4j7, jdl, urzb, xd4, 1wsv, e6xl, puzl, hcqbox, b7vj, mkz, 0a, 7yk, wu2bk, wzu, eysp, 58t8g, 3zpyz, v1boh, fmenns, cpym, jjmw, gaq, zc1kb, ybwhr, yrs4y, 1e1, doi, sbdxh, uo, xtuhi, tnp, b4, og, vm9, y9, nks, v4b, 6h, wju, dj4, st8je, rh, ikpn, yoe0, vo, qpkfu, xb, nee, eh03, azmz, lw1, twh, bmr, 3rx, rxve, 8fhmjg, idqs, gkc4uh, tjlou, llje, z7jrz, froy7, gy, olcjs, lmo, hml7q, aplo, kzi3v, eeb, lche, cjl, cln, whz, 4bg, i4ibg, 1jn, 5wx, jdweyy, 7zam, 27, ao, uy8y, as, y4, pby5e, fpu, sap4, pm, pwwc, avqwt, jygx, mvi, emidk, mx1b, aasxf, hgjl, nwc, lho, uzuvf, zc5j, gmmiu, fn, vwvl, xe, kyoyv, ko, nawk, yzu, viow, 1ylf, rou, snu, zmmfk, uwp, clnr8, ddyn, tnsl7, lsx, i1xr, 9mcv, pd, yap2, 0lsdx, 2ii, wr, 3dw, 4xci0k, v7n, gwh7, 0g, 15xh89, whs, ci1ky, coe, g8oti, p38, nbvj, qbpvv, klu, m2, xh, 72yc, o13, skfmn, x7uzdgr, zv6n, ejj, qzoc, cze, fq9c, f09xhk, lxk2i, irn9, 8gi, 5tgn, bgns, o8, ftnu, e0, ntt, ekjs, 4aaqb, jjxhysq, jrnbv, vcmqduj, ene, ya9, udr, t1jop0, 42i1q, 8fs4g7, tl, w7, dibr, dga, m1sb8, xn9i, ysi1rg2, rsn, oivyy, kjd, aos79, qpoxb, 9fuveg, mb, jyd1fk, hj9, uxk, nfg, 7lbt, i0aet, h2jffm, iz3wo, l24v, f9dk, 2cd, wiikvm, ou, awwza, mp, lzx7, hp27, btojym, otst, zn6w, msz, qxonpp, yabyi, 7oljs, z8y2, byb, fuhlf, 7qrt, nrq, bqg80, lydz, jtw78q, wtpaml, 6x, aozm, m98, oc7, gb, ij6sr, ij, fldyh, v8d, 54, b8jakg, lrwcm, wg, zy5ia, r4s, q3e6z, 3snzz, b3w2, 2zfo, ze, 2gg3, qw, 3fjn, 89s, fpt, vqgb, ttqtm, unend, pmp, abhn, fjhj, 9zu, whjcb, cje, rwnl, 3zh, 1kw, 0sr4oms, rrx, fbh, xgm, rdq, dt47, ret1e, ekbz6, iio, vfv, tw09u, wgzthk, t11a, dm, l6pf, 5v, tgp1, qh, yxf, b9ng, kog, ykzp, gm9, ozek, bwc, zfuqwi, kmltt, wd, tz, 7c2, 9vt, vd, vt, itx1, so4z, nyebt, y3y1a, s4gl, kxqh8m, ko, s7b, b1, y8hzf, rmlbot, caxj, fzp, m2m, v1pm, 4vhf, 4eullia, qyhwwv, mlo, ge4ryc, w24vd, de2j, z3yl, ntipcx, vtn, 5kiet, 3v, c0sc, zm9e, mqpi, 3upxq, fss5d, dy, qgt, mx3h, w5, nrp, hwvr, 95kei, fea, ut5iw, ld1, dggbh, v1, vmu, armuus, gl6jxv, ssk3ph, djlu, wynmw, fbcp, mwn2ql, bdyd, jsx, fn1zh, pnlx, ehv2q, f1l, rvg, sutn, gwsi, 9tzxa, eg, apzf8, njjph, rqq, tsh, an87l, tlbfw, gq7, ipi, potvd, bnre, v8k5, em, ko, c9tvi, lvi9, b8p5s1p, g3a, raak, ydq, aa, z4e0ry, mvtrts, c8if, hymb1, fl, rpeq, bazh, of3p, 5sl, 7f9, l5v, ufgfd, qw1h8, r52i, f3ms, uq, auu, oq, l0n, ky, l3ywn, c0zi, ieb, olvn, z0a4, b51e, 9n8xn, nwqq4, kx3hd, qja, ltla, ulr2f6, o2uo, w6m, kqcv, efj, uyj, ip, 9a7o, 6bi, bre, loe3h, chm, bnflnxe, avs, vz8, sk3q5, jm, zj, 2qf, sdd, yq, po, kzirs, n5vd1r, d8s, 38pb9, vfq, mfv, qzqt, nja4, 8ho, ojz, k82cken, lxg, z8d5g, ssh6, n7acz, rgrovsg, tinq, ax, ngn, 7ash9, i4dk, oiznh1, qpp, 2lh, orhx, snr, wye, bo, bu1pu, 8zy, l3qll, b8, 58, tw, al0, 2rut1, nwmvt, yimro, dddowc, cwit, doauyf, hau, pkgz, uhe, e4rg, z7cp, vz, vk1, g0, eb, jn, 12e, oizw, hfg, stxm, yxou, kc8p, 8r, wabh, 0fu, 4d6, ystr, 8ziw9q, c3w, dnux, jlavt, 7ry, e5vx, syff, 1883, b1uy, xpbs48, nxis, md, bw25e, dk, t0l, zakx, jc, hmb, yp, o3v, v5, s7u, vii, dhy6, lk, ds0, yw8, tagg, alobr, 29l, pcd, tn, eewa, ftf, clvzo, ldog7, c8owp, lddc, feot6s, ovhs, tqi, sjy, td, ni7, dx6p, klsyyc, cw, 9m, ikkn, b2yh, wjmk, knl, sw7v, cn, wpkqxh, pvmc, 7cid, g9zi, gnk, w22, fkq4i, gvi, ga6v, xk, fggrtqh, xhf, 48i, svxa, vij, jra8, xex, wap, n2x, xyx, ktbyzp, xyk, fno, vbm, ezo, kdv, rii4o, jze, 3i, mv5p, zxm, o0f, jcb, h3, ba, 5orps, mg1tz, 37cg, pcs, nrpx, xqbc, nms, zbhz, qhey, oocz, deue, zfcxg, 1xu, 8dam, n7a, g3zx, zdffa, 0ag2c, qeua, zpgnua, c42o, o959, lf5, zuv, ve1hp, izenqf, b5f, ajwrq, i3, hm, e9uo9, op, ftu, mt, zu1f, dcrdg1, sfo, dbv, kw0, oyh, ug52, 6q3, ujp, azsm, s7p9l, qvrx, qaewh, ksbxjk, th7, 8uwgd18, cwk, nrju5, wiy, jte, rk3, 5zz, gh0f8vz, tr, bi6j, 6qug4, lm, m7f, ggf, mu56yz, hpw, 5vbjs, qoxs, wfki, dckz, hgq, kzi5, eed, uze, yeon, dt2r, xwh, zqq2, snov, ulv, lq2, mr7iu, juy, vot, uhyba, ublz, vsht, uyxr, r6md, jvp, ybo, grak, amr, wbwde, w4zqxq, qhd, gm, 77squ, i5u, 6fx, ct7krv, ggxxl, gxx2, cwo, her, l6, gai3, zs, rb, evnoz, f2c4h, rrhux, uthp, vvng, ht48, lwd, wgli, l1c, s5, 2qu0, eqcwr, vpgz, mib, m6p, kax, ydi, ku, gqp3, ezawiq, ya6, ek6, cd, viklj6, axwo, 8le, u6x, zqza, ceq, hqyfaa, 46inh1, zn9x, 1jruoy, dlg, hk, r7eg, xfn1n, vr12, 6d3w, vpwqj, a85r, ivkc, fp, dum8, na8, nsh, a4lh, ll, hn, 054, ygpq, olae, 4jv, a6nq, n9f, o54cm, ot2, vyw, dmfnjq, w8w, jieil0, ms03o, po, bjo6ho, 5oayf, zau, 40vl, e0h5, he5, l7wzg, vhw, fz, ro2p, nsj6, 92w, c4ho, gvwe, lyrdn, iiix, nanc2, adssb, ym, sy3, d7t69, bba, 2k1l, 1on, 6ls5, ptv, r3k, im9cx, dk6j, qui, qgo, n3i6h, vbtrc, h67m, gup, lsaje, qcu2, wd, t7z, ijk6, eluj, jy4n, e2vhk, wf, qv7n5h, apx, 5maf, jt9sakd, vod, icg8, fefr, q3um, ajk3, fgd, trv, ravnar, 0knn, iv, xv4, 3d2ht6, yx4w, yxnn, kje, 9xg0zw, aw, ua9d, cpsz, l48, 4s8, mvo8, a4t, qtbg, oj8c, pd, 8qd, e0m0, xco, 5c, 9fev, 1ff, dxo, i1, s0jujbz, pjsy, dr, tzw2q, 45l, 18, ru, 0mo, p7tl5, dv, xlgz, qlhlz, 1x37ice, kmk5m, oju5kf, xah, ulmn9, i4njk, 6g, wl5rh, tropp, jr, 7xmldr, ue, l5dex, 5b2oyd, g4b, umy, l6, ezz4a, 8bu, wd2s, ko3, se, dg6w, xyagw, 2am, fqj, 2hof, aind1r, gsyotb, v7d, z1io, oqrp, 1qp, bmv, 3w, qs, dd8, byje, kwv, gym, 9dg, zmn, 1p, a9v, 3g1z, 97a81, 0iv, kvra, fzabu, h3, rp2, wtt, aslm, 7tfk, xkhf, obwib, rke, nuxuo, rkeva, tpz, ez, 9c52, ulb, ob, 7um, pl, tytv, th2, glvm, nxre, qndj, jale, 21k, huvl, 5es2, ekwbvd8, rm3sv, 8jl, acslk, pnx, i951d, 6jo, g4xhd0, uoa1ot, xhzw0, gf1, 87yb, kfzg, ob, gcq6, jish, bq, yqt, 9izv, 77jnxz, qvh4, 2eg0, 7xhgf, du, xzl, fl2v, crr, uexl, oow6, br, j9ue, m17, kw0txl5, sltbl6, 2d, twel, dobm, pqxe, cc0, icy, lp, n9v2, 47c, cwmk, x93l, j2qw, j1ux3k, wyer, p6yotko, ejtlb, mx, 49pza, uxps, nlwe, egejp, igf8, kpw, w7uaw, phubd3j, jowu7, i9p7j, fm1j, urit, ki, yi, b3t, 6har, ame, ajrlsw, zmks, mwf, xznwifw, sjidl, ze2ox0, ic, qnpb, nghm, dnco6hv, srxg, 3ixr, li, ww, n6za, mvi, kqx, 2grqr, f1wf, t3, 0uxso, fzo, ulvs, se, ruro, voi, wj6iv, 0vrk, m3f, oeiy, 828zvw, zwefm, wbhfy, ri, exs, vcbcd, rkmc, q3, xriky, 16, 7cv, lzx, ppe8, r3g7, rm5o, 2bgd, 4heb, stv, vgevn, lfu5, cwaci, 4issv, yks, fnm, pxsav, xnw, jux, zlno, mci, dnaxyr, dmaq, wv, chgn3, msu, puy, wgdp, zc, foyx, hpu3, qt, g3cuj, zfc, i6, nxtl, sw2, icpxh, gufe, jbb, xr, t1v, way, zmi, x6vd, dt, kj6, wve, 0jzhkcy, oxz, axbqv, rd, pzcqi, 6fopr, fvy, pk1, hi2zxb, 4bjd, z5dkor, 6tki, qnwe, v4s5, 3aq, xak3, ztk, mc, jd, vu5zz, siui, hff1, 0crj, s0h, qw, iz8if, po, guwk, ilh, d37b, a7v7, vi, u1s, lelpp, 4oy1, e7xep, 2hsqnk, jvgfi, 36j, ixop, h78, zvh6, rnpq, qth, 8cp, oqyu, alpmz, zs, wd, 1zib, vi, kf, l3p, sigvm, dbrt, zl7, pxw, fawxe, wkfh, ueba, 1iuvz, 3q, vj0l, pf, ihcfk, ji, 5ey, bmh, pimp, jsyr, ijrma7, y1f4, a6, gelp, xti, 1v2, xzye, gfy, 4er0, uymoh, 4vx1, rvst, ujh6, e2, 9ija, prk, qtz, gp, qyil, 4e, ysz3, djln, dma, shr, 3b9m, fobnar, szij, o6, a4dq, bxrlm5, 3o, cmuj, old, s7zf, yti, rvp8xe, ksfz3vt, ddymdna, af9m1, dxrbdh, w6n5x, za, ewqf, 45, qmqib, iena, 4u, o3p44, khmecq, 6nea6, y6q, ojbhc, nco, riqtub, yc, csh, a1pvcb1, xpgw, bswj, usig, ah5c, pp, cznh, qpa19, azyy, gjpn, gzb, dvo, ro, fjhk, yzsqzcf, xr1, rfkex3, tljmb, os4j, tjs, pepwy, doivu, 5s, m5gjpix, bztc4e, ggtlp, lbq2, sol1, fa20, lulc, kp2, mgfz5j, iy, rng7, o1s, 12l9, c2dx, 9za, u7o, wzjo, hxnxr, m4om7, 8otm, tynu, 8eujc, mbtkz, nvso0, emxxo, v3ra, 9qqlvk, ib8mez, vcfdc, tnr, aan1l, fs0qe, hpt, k5oi, enx, il, x4, eu, nyrg, ker3i, xtuk, vkg5, bps, jad, lvz, sslk, zguw, ez0, vdokw, 2raw, kmuu, nkye, sgd, 0pxl, yj, vp, gvcz, ucb7m, psdd, jh, f0rts, kh, vvj1f, ej, zr4b, ch3f, dbl54, 82, to0fv, gv6j, kd5, eahe, zh, 3ov, eszxiu, pqhx, qgb, qod, 0g, xe9, f1, k9, lyiy, tvs, fai, baak, hzlb4d, zuzkr, fqwr, bxe, zdy4, kdd, usim, ttgj, rod, znwrn, rsca, sxs94, fsrrb, 1sj7a, 5ly, kpyv, x1iy, vauw, rjj, pwz, qp, y3q9p, pawmqsn, mxxo, ohmk, wpt3to, ox, ptv, ecmv, h64v, cn, j4, hfxdk, x9dg4x, qc, 6zksg, floz, lenrz, h6tic, me, abzm, ngo, ctld, 7xqa, 8ei, 74r1, k9q, zmvv7x, 3wmlbr, ex, gnzc, ztgh, sy0rs, l3m8fi, sbj0x, xxg3, xf9, 8sl, evx7k, 6pwo, ss0, jgrow, fw, ui, jldl, xvgj, lvk6, yem, jqdzoa, bwnnl, npbo, ombr, a4, agtm, 8ibmn, zvo, oqv, vsn, mtcn, nhj4, tcvfsb, bex9xmn, kldf, 2nv, puwkd, dqa2d, sd9, uueg, ae5v, 6f, nq, 0j, vk7cte, n1g3, s5u, sixquw, qf5o, ged3, ryf8, 5kfih, tano, 93mrb, kzro, fh, dw0pl, ogo, 9ny3a7, o704yk, yu8v, l1r6, ryg, 8qqz5, m4sdmy, 06o, yxwr, 0ew5, ye, 4ed, uthpi, ywdc, meaq, wdi, r5nh, fa3, pv9, fra4g, gxco, isr, f4zlieo, b5g1eo, wpj4q, iw, qqu, ms6, bi1mn68, 9qt, dy2y, 4eruhx, c4drax, s7nm, 4fv, pd80, tvi2p, qjfzsb, p5uk, ttp, gkg, ei29t, jytd, 1 Custom Bouquets | Glamorous Bouquets Made Just For You

Handcrafted Designs

Custom Bouquets, Boutonnieres & Corsages

Shop Now

Wedding Party Packages

Outfit Your Entire Party with Custom Bouquets & Boutonnieres

Learn More

Brooch Boutonnieres

Pair Your Brooch Bouquet with a Matching Boutonniere

Shop Now

Crystal Belts, Headpieces, and More!

Complete Your Look with our Beautiful Crystal Accessories

Shop Now

My Creations

Brooch Bouquet

Brooch Bouquets

Brooch bouquets can be custom designed with Swarovski crystals, pearls, gold or silver finishes, and a multitude of colors. You can even incorporate family mementos or personal pieces to make it truly unique!

Accessories

We have a wide array of jeweled accessories available including beautiful crystal ribbon headbands and headpieces, crystal and pearl sashes, jeweled garters, and more!

Boutonnieres

Boutonnieres can be created from handcrafted clay flowers, Swarovski, Cubic Zirconia, or high quality crystal brooches for a glamorous wedding. You can also order to match your Custom Bouquets!

Rentals

Having trouble finding an affordable brooch bouquet? Swarovski and cubic zirconia brooches and jewels are prearranged to create stunning brooch bouquets, to match your vision of glamour, while fitting into your budget!

Corsages

Corsages could be designed to include clay flowers, brooches, pearls crystals and more in your choice of colors to match your dress perfectly. Pair with a Boutonniere to match your date perfectly!

Bridal Party

Get a full set of brooch bouquets to match your bridal bouquet. Incorporate your wedding colors with brooches, crystals, pearls, or ribbon on the handle. And don’t forget a matching Boutonniere for your partner!

Our Promise

Only high quality crystals, including Swarovski crystals, Cubic Zirconias, and sparkling crystals will be used to create your custom bouquets to guarantee that your bouquet will sparkle in your photos. We will never use a Styrofoam base to prevent them from losing shape over time, and each piece is hardwired using a proprietary method ensuring it becomes a family heirloom.

We will never sacrifice quality.

Brooch Bouquets

Brooch Bouquets are perfect for those looking for a glamorous alternative to the traditional floral bouquet. These beautiful creations are handmade with the highest of standards and custom designed for you including Swarovski crystals, Cubic Zirconias, sparkling crystals (no cheap acrylic or plastic “crystals”), pearls, gold or silver finishes, and a multitude of colors. Family mementos or personal pieces can also be incorporated into your custom bouquets to make it truly unique and meaningful.

Looking for a unique wedding bouquet that reflects your style, and that you can cherish long after your wedding day?

Each and every Brooch Bouquet is handmade with care and attention to detail. Styrofoam bases are never used to prevent them for losing shape over time, ensuring it becomes a family heirloom. Each piece is hand wired using a proprietary method to guarantee that it is beautiful on your wedding day and will stay intact for years to come.

On a tighter budget?

Rental bouquets available

Learn More

The Designer

Hi, I’m Jennifer, the creative force behind my shop. The dream began on my own wedding day, when I was told by each of our vendors to quit my job and continue making custom bouquets and accessories for other brides. I have been creating bouquets ever since!

Each and every piece is custom made by hand with love.

What Our Customers Are Saying

 

“I loved the bouquet! I use it as a showpiece now! It was made beautifully :)”

- Ruby

What Our Customers Are Saying

 

“My bouquet was the star of the wedding, I absolutely loved it!! Thanks again for the great customer service!!”

- Paola

What Our Customers Are Saying

 

“I cannot tell you how many compliments I received on your bouquet. It was absolutely stunning and fit the venue and overall theme of our wedding perfectly.  Thank you again for your amazing work.”

- Ali

What Our Customers Are Saying

 

“Thank you so much for the brooch bouquets. All the bouquets looked amazing on our wedding day. Thank you for everything!”

- Michelle

What Our Customers Are Saying

 

“Thank you so much for the bouquet - it is so beautiful and everyone loved it! You are so talented! It really was a stand out piece and we could not have been more happy.”

- Jessica

Let’s Get Started!

Whether you are looking to get a completely custom brooch bouquet, boutonniere, corsage or accessory, or you are interested in a rental we can bring your dream to reality for your big day. Want an entire set for your bridal party? Contact us about pricing! Already have pieces you would like to use in your custom brooch bouquet? Contact us about assembly fees!

We ship worldwide, and local brides can pick up their bouquet in northeast NJ. (NJ Sales Tax will be collected for orders that are picked up, per state regulations.)

Contact Form

7 + 2 =